Unable to write to directory App/Temp
- Ondrej
- Člen | 110
Poustim nekolik http pozadavku na Nette aplikaci cronem.
Jednou za cas jeden
z pozadavku konci chybou Unable to write to directory App/Temp
https://api.nette.org/…age.php.html#87
Prava jsou samozrejme vsechny nastavene spravne. Webserver pouzivam Lighttpd.
Pri hledani problemu jsem narazil v dokumentaci umask(): „Note: Avoid using this function in multithreaded webservers. It is better to change the file permissions with chmod() after creating the file. Using umask() can lead to unexpected behavior of concurrently running scripts and the webserver itself because they all use the same umask.“
Btw. je nutne testovat zapisovatelnost adresare pri kazdem pozadavku v producnim modu? Neni to ztrata casu? Nebo to alespon cacheovat.
EDIT: tak nakonec je problem v uniqueid(), protoze pri zruseni zavinace pred mkdir() to hlasi warning „File exists“, coz znamena ze oba paralerni procesy vygenerovaly stejne $uniq. Zkusil jsem $uniq = uniqid(rand(), true) a testuju dal… Kazdopadne to je dukaz, ze pokud mkdir selze tak to nemusi znamenat, ze adresar neni zapisovatelny a koncit hned aplikaci vyjimkou.
Editoval Ondrej (20. 11. 2009 20:19)
- David Grudl
- Nette Core | 8228
Mělo by pomoci volat uniqid s parametrem $more_entropy, podle zdrojáků PHP se tak do výsledné hodnoty přidá ještě lcg_value, která se počítá i z ID procesu nebo vlákna.
Btw. je nutne testovat zapisovatelnost adresare pri kazdem pozadavku v producnim modu? Neni to ztrata casu? Nebo to alespon cacheovat.
Mělo by stačit nastavit
FileStorage::$useDirectories = TRUE