base_path() probléma

Boogey képe

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.

Drupal verzió: 
RaptoR képe

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.

0
0
Boogey képe

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:

$dirpath = 'sites/default/files/photos/i_'.$itemID_max;
mkdir($dirpath, 0777);

de már így nem tetszik neki:

$base = base_path(); // eredmény: /concasor/
$base = substr($base, 1) //eredmény: concasor/
$dirpath = $base.'sites/default/files/photos/i_'.$itemID_max;
mkdir($dirpath, 0777);

é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.

0
0
RaptoR képe

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.

0
0
aries képe

Használd a file_create_path() függvényt.

0
0
snufkin képe

miert nem hasznalsz imagecache-t?

0
0