Sziasztok!
Egy olyan modult fejlesztek, ahol a felhasználó képet tölthet fel, és a program az elemhez tartozó képeket lementi egy generált könyvtárba, a thumbbal együtt.
path-nak a következőt adtam meg az elején:
$dirpath = 'sites/default/files/photos/i_'.$itemID_max;
ezzel létrehozza a könyvtárat(0777) a fájlokat is lementi, minden ok, de csak az én gépemen, erre találtam ki azt, hogy majd hozzáfűzöm a base_path() függvényt az én útvonalam elejéhez:
$dirpath = base_path().'sites/default/files/photos/i_'.$itemID_max;
ezt használva azonban nem menti el a könyvtárat, az eredeti képet belerakja szépen a tmp-be, a thumb-nak az elérési útvonalát jól megadja, de mivel az eredeti kép nincs a helyén, az átméretezést nem tudja végrehajtani a program.
Ha valakinek van valami ötlete ezzel kapcsolatban, azt megköszönném.
A base_path() hozzárak
A base_path() hozzárak legalább egy /-t az útvonalhoz, ami fájlműveleteknél azért nem jó, mert a gyökérkönyvtárba akarná valahova másolni a képet, aminek a szolgáltató biztos nem örülne. :) Szerintem inkább ellenőrizd a jogosultságokat, hogy a sites/default/files és a sites/default/files/photos írható-e a PHP által.
jogosultságok
Nem a jogosultságokkal van a baj, egyszerűen nem képes létrehozni base_path-al a könyvtárat.
Megpróbáltam úgy is, hogy kiszedem az első /-t, de ekkor sem hozza létre, és így borul minden.
A jogosultságokkal már azért sem lehet probléma, mert base_path nélküli útvonalaknál tökéletesen működik...
azaz így teljesen jó, de csak nálam:
de már így nem tetszik neki:
és erre kapom ezt az errort:
* warning: mkdir() [function.mkdir]: No such file or directory in D:\server\www\concasor\sites\all\modules\concasor\concasor.module on line 1094.
base_path() nélkül
Szerintem azt próbáljuk meg kideríteni, hogy mért csak nálad működik az első verzió, ugyanis az a szabályos megoldás.
A base_path() függvény az én értelmezésemben arra való, hogy ha pl. egy képet akarsz linkelni, akkor a src="sites/default/files/kep.png" nem fog működni, ha be vannak kapcsolva a rövid URL-ek, mert akkor pl. a /node/1266/sites/default/files/kep.png helyen keresné a böngésző a képet. De ha beraksz elé egy base_path() függvényt, akkor az odarak legalább egy / jelet így már jó helyen keresi a böngésző a képet: /sites/default/files/kep.png.
Azonban amikor a php-vel végzel fájlműveleteket, akkor nem kell base_path() függvényt raknod az elérési út elé, mert akkor a szerver gyökérkönyvtárában próbál meg létrehozni fájlokat, amit biztos nem enged a szerver.
Szóval azt kellene kideríteni, hogy miért nem megy a szerveren az első módszer. Erre írtam hogy jogosultságokkal lehet gond a szerveren.
Használd a file_create_path()
Használd a file_create_path() függvényt.
imagecache
miert nem hasznalsz imagecache-t?