Autor Zpráva
davchy
Profil
Zdravím a prosím o radu, seděl jsem u toho celou noc, prošel tuny příspěvků ve fórech, ale žádná řešení nepomáhala. Vím, že by to snad šlo za použití funkcí ftp, ale ten skript obsahuje plno míst, kde by se to muselo vymyslet a přepsat, že si na to netroufám. Snad jste někdo řešil něco podobného a vyřešil.

Jde o to, že se má vytvořit v adresáři „upload“ adresář s číselným názvem, kde číslo je o jedno vyšší, než počet již vytvořených adresářů, ten se vytvoří, ale pak se má v tom adresáři vytvořit další, který se jmenuje „thumbnails“ a tady už je problém, vrátí se chyba viz níže. Jen pro úplnost, do adresáře se má následné uložit obrázek a do podadresáře vytvořit náhled, nic z toho se už ale samozřejmě neděje.



Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /www/floreus.net/test003/uploads/30 owned by uid 65534 in /www/floreus.net/test003/include/image_upload/image_upload.php on line 341

Warning: chmod(): Unable to access /www/floreus.net/test003/uploads/30/thumbnails in /www/floreus.net/test003/include/image_upload/image_upload.php on line 342

Warning: chmod(): No such file or directory in /www/floreus.net/test003/include/image_upload/image_upload.php on line 342

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /www/floreus.net/test003/uploads/30 owned by uid 65534 in /www/floreus.net/test003/include/image_upload/image_upload.php on line 346

Warning: chmod(): Unable to access /www/floreus.net/test003/uploads/30/bg_foot.gif in /www/floreus.net/test003/include/image_upload/image_upload.php on line 347

Warning: chmod(): No such file or directory in /www/floreus.net/test003/include/image_upload/image_upload.php on line 347



Zápis ve skriptu:





if (!is_dir($dest)) {

mkdir($dest);

chmod($dest, 0777);

mkdir($dest.'thumbnails');

chmod($dest.'thumbnails', 0777);

}



// Save file

move_uploaded_file($tmp_name, $dest.$name);

chmod($dest.$name, 0666);





Budu vděčný za pomoc.
koudi
Profil
Řešil sem něco podobnýho, ale nakonec sem to všechno přepsal přes ftp funkce. Ono jde o to, že když vytvoříš složku přes skript, tak to nějak funguje tak, že se ji jako vlastník přiřadí proces apache a ten pak nepustim proces tvýho skriptu, protože 'to je někdo jinej'.

Jestli sem to blbě pochopil, tak mě někdo opravte.
davchy
Profil
Řešil sem něco podobnýho, ale nakonec sem to všechno přepsal přes ftp funkce. Ono jde o to, že když vytvoříš složku přes skript, tak to nějak funguje tak, že se ji jako vlastník přiřadí proces apache a ten pak nepustim proces tvýho skriptu, protože 'to je někdo jinej'.

Jestli sem to blbě pochopil, tak mě někdo opravte.


Pochopeno je to dobře, že je to tímto, to jsem v noci vyčetl z každého drůhého příspěvku na fórech. Já jen vím, že na přepsání pro ftp nestačím, a občas jsem někde narazil na to, že se dá "nějak" zařídit, aby se předávalo UID tak, že tam přístup pak je. Třenba na to nějaký trik bude...?
koudi
Profil
davchy
no, myslim že neni. Kdybys ho našel, asi by to hodně lidem pomohlo.
Přepsat to na ftp je docela jednoduchý. Stačit pomocí ftp akorát vytvářet ty složky.

Tady máš funkci, co sem někde našel

function FtpMkdir($path, $newDir) {

$server=''; // ftp server
$connection = ftp_connect($server); // connection


// login to ftp server
$user = "";
$pass = "";
$result = ftp_login($connection, $user, $pass);
// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection,$newDir)) { // create directory
return $newDir;
} else {
return false;
}
ftp_close($conn_id); // close connection
}
}
davchy
Profil
No toho se právě bojím, že to budu muset přepsat. No to zas bude probdělých nocí :( Za tu funkci díky, jestli na to fakt nic nebude, tak jako vzor určitě pomůže. ...třeba mi na hostingu SAFE MODE vypnou ;)
koudi
Profil
Hm, asi nevypnou :)

Teď nevim, umí php předeklarovat svoje funkce? že by se to třeba pojmenovalo mkdir a nemuselo by se nic přepisovat? Ale mam pocit, že to v php nejde.
davchy
Profil
...hmm, tak dalece nejsem.
koudi
Profil
Hm, tak redeklarovat nejde.
Ale možná by to šlo trochu oblbnout přes seterrhandler, kterej zpraovává chyby, abys to nemusel všechno přepisovat. Prosté když by to objevilo tuhle chybu, tak by to zavolalo tu funcki na ftp. Ale nevim jestli by tim šli zjistit parametry mkdir a hlavně co by se mohlo stát při chybě v tý funkci ftp, která by opět volala err handler. To by se asi musel nějak dobře ošetřit, hlavní problém bude asi v těch paramatrech.
davchy
Profil
Díky za snahu, ale to už při mé (ne)znalosti, bude snadnější to přepsat..
davchy
Profil
Tak jsem začal a nevím, co s tímto:
Warning: ftp_mkdir(): 30676 Kbytes used (5%) - authorized: 512000 Kb in /www/floreus.net/test003/include/image_upload/image_upload.php on line 355
Toto téma je uzamčeno. Odpověď nelze zaslat.