Forestil dig PHP 5.4-udvidelsen fungerer ikke med relative stier. (vinduer)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at installere imagick PHP udvidelse på windows. Det arbejdede på PHP 5.2, PHP 5.3, men jeg har problemer med PHP 5.4.


Imagick-version: ImageMagick-6.7.6-3-Q16-windows-dll. Modulet arbejder. Jeg kan se imagick i phpinfo ().


Problemet er, at imagick ikke genkender relativ sti til filer. Hvis jeg f.eks. Har enkle index.php og a.jpg i samme mappe, kan jeg ikke bruge $im = new imagick('a.jpg'); fordi jeg får undtagelse:



  Fatal fejl: Uncaught undtagelse 'ImagickException' med besked 'kan ikke åbne billede` a.jpg ': Ingen sådan fil eller mappe @ error/blob.c/OpenBlob/2614' i D: \ Web \ i \ index.php: 3 Stack spor: # 0 D: \ Web \ i \ index.php (3): Imagick -> \_\_ construct ('a.jpg') # 1 {main} kastet i D: \ Web \ i \ index.php på linje 3



Men når jeg bruger absolut vej $im = new imagick('D:webia.jpg');, arbejder den.


Jeg fandt ud af, at Imagick bruger Apache core dir som reference. Jeg reddede billedet uden sti:


$ im-> writeImage ('this-is-what-im-looking-for.jpg');


Og jeg fandt det i C: \ Programmer (x86) \ Apache24 \ this-is-what-im-looking-for.jpg


Problemet er, at alle mine gamle scripts er skrevet med relative stier, og jeg vil gerne regne med at bruge dem.


Jeg ved ikke, om problemet er i imagick selv eller et sted i PHP 5.4.


Tak på forhånd

Bedste reference


Det lyder som om du måske har gennemset en fejl.


Jeg foreslår at rapportere det på http://bugs.php.net/report.php[6]


I mellemtiden kan du arbejde rundt ved at bruge \_\_DIR\_\_ eller \_\_FILE\_\_ for at konstruere en absolut sti.


Hvis du f.eks. Vil bruge scriptets mappe, skal du gøre følgende:


$im = new imagick (\_\_DIR\_\_ . DIRECTORY\_SEPARATOR . 'a.jpg');