2012-03-31 10 views
14

私はimagick PHP拡張機能をWindowsにインストールしようとしています。それはPHP 5.2、PHP 5.3で動作していましたが、PHP 5.4に問題があります。Imagick PHP 5.4の拡張機能は、相対パスでは機能しません。 (窓)

イメージングバージョン:ImageMagick-6.7.6-3-Q16-windows-dll。モジュールが動作しています。私はphpinfo()でimagickを見ることができます。

問題はimagickがファイルへの相対パスを認識しないことです。

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `a.jpg': No such file or directory @ error/blob.c/OpenBlob/2614' in D:\Web\i\index.php:3 Stack trace: #0 D:\Web\i\index.php(3): Imagick->__construct('a.jpg') #1 {main} thrown in D:\Web\i\index.php on line 3

しかし、私は絶対パス$im = new imagick('D:\web\i\a.jpg');を使用する場合、それは次のとおりです。私は同じフォルダに簡単なindex.phpをa.jpgを持っている場合、私は例外を取得するので、例えば、私は$im = new imagick('a.jpg');を使用することはできませんワーキング。

私は、ImagickがApache core dirを参考にしていることを知りました。私はパスなしの画像を保存しました:

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

そして私はCでそれを見つけた:\プログラムファイル(x86の)\ Apache24 \これは、ある-何-IM-探し-for.jpg

問題はすべて私の古いスクリプトがあること、です相対パスで書かれており、私はそれらを使用してカウントダウンしたいと思います。

問題がimagick自体にあるのか、PHP 5.4のどこかにあるのかどうかわかりません。

ありがとうございました

+0

あなたの質問は何ですか?あなたは '$ _SERVER ['DOCUMENT_ROOT']'を使用できませんか? –

+0

これはImagickの問題ですか? 'echo __DIR__'を実行して、それが自分の作業ディレクトリでないかどうか確認できますか? –

+1

ベン:私の質問は、現在のディレクトリ(D:\ web \ i)をApacheのルートディレクトリ(C:\ Program Files(x86)\ Apache24 \)の代わりに作業ディレクトリとして使用する方法古いPHPバージョン) –

答えて

10

あなたはバグを発見した可能性があります。私はその間にhttp://bugs.php.net/report.php

でそれを報告することをお勧めしたい

、あなたは絶対パスを構築するために__DIR____FILE__を使用して、それを回避することができます。例えば

、次の操作を行い、スクリプトのディレクトリを使用するには:

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg'); 
+2

ありがとう、この回避策は働いています。実際には、私のためのよりよい方法はリアルパスです( 'a。jpg ');それは問題なく動作しています。私は誰か他の人が同じような問題を抱えているかどうかを判断しようとしていました。私は2つの異なるphp_imagick.dllを試してみました(私は窓の下に自分でそれをコンパイルすることはできませんよ)と4つの異なるのImagickバージョン(インストーラ)しかし、私はこれが原因で正常に動作しているimagick絶対パスで、本当の問題はないと思います。 –

関連する問題