Ahoj resim takovy problem. Pri ukladani fotek do fotogalerie vytvarim slozky podle datumu takze url je treba 2/0/0/5/2/0/0/9/552.jpg Toto delam kvuli tomu aby se pak pri vypisovani fotografie nemuselo tak hledat v FS. Problem ovsem nastava kdyz chci vytvorit slozku pomoci scriptu do ktere se daji vkladat soubory a safe_mode je na on. Rekl jsem si ze teda vytvorim vsechny ty slozky predem jenze to je 10e8 slozek a to je trosku zbytecne. Jedine co me napada tak je snizit zanoreni treba jen 2/0/0/5/ ale to niz neresi. Jak to tedy vyresit?
Fórum › PHP
Mkdir() & safe_mode = on
Figa
Pri ukladani fotek do fotogalerie vytvarim slozky podle datumu takze url je treba 2/0/0/5/2/0/0/9/552.jpg Toto delam kvuli tomu aby se pak pri vypisovani fotografie nemuselo tak hledat v FS.
O FS bych se tolik nebál. Nechápu, kde všichni berou, že by tohle mělo souborovému systému nějak výrazně odlehčit. Schválně jsem si vytvořil adresář s 1000000 (slovy jedním milionem) souborů. Získat obsah kteréhokoli z nich je časově naprosto zanedbatelná operace (< 0.001s). Uznávám, že vypsat jejich seznam už zabere něco přes 2s*. Ale i tak, kolik jsi už viděl fotogalerií s milionem fotek?
A když už chceš zanořovat, tak nějak rozumně. Např. ve stylu RRRR/MM/DD.
Problem ovsem nastava kdyz chci vytvorit slozku pomoci scriptu do ktere se daji vkladat soubory a safe_mode je na on.
Cituji z PHP manuálu fce mkdir()[1]:
> When safe mode is enabled, PHP checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed.
Takže by mělo stačit, aby složka, ve které podsložky vytváříš podsložky měla stejné UID jako skript, kterým jsou podsložky vytvářeny. UID právě běžícího skriptu můžeš zjistit pomocí fce posix_getuid()[2].
[1] http://php.net/mkdir
[2] http://php.net/posix_getuid
* S ubývajícím počtem souborů se přímo úměrně zmenšuje i čas potřebný k jejich výpisu.
Figa
A slozce nastavim UID jak?
Pokud máš k serveru rootovský přístup, tak nejjednodušeji pomocí chown[1] :o)
Ale spíše se tohle omezení safe_mode obchází tak, že použiješ ftp_* fce[2] – viz ftp_mkdir()[3].
[1] http://nersp.nerdc.ufl.edu/~dicke3/nerspcs/chown.html
[2] http://php.net/ftp
[3] http://php.net/ftp_mkdir
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Move_uploaded_file() v Safe_Mode — založil survik1
AJAX & PHP & MySQL vložení záznamu — založil JMM
Problem s funkci mkdir(); — založil mORb
Moderátoři diskuze