質問

さて、ここで起きていることの内訳です:

  1. <? $foo = new Imagick(); ?>コマンドラインから実行した場合、エラーなしで動作します(例:sudo php myscript.php
  2. ただし、Webブラウザで実行するとFatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1が表示されます。
  3. magickwandがインストールされていません
  4. extension = imagick.soはimagick.iniにあり、phpInfo()に従って正常に読み取られています
  5. ただし、imagickはPHP情報に表示されません。

アドバイスをいただければ幸いです。

役に立ちましたか?

解決

正しいphp.iniを編集したことは間違いないと確信しています...
Webサーバーのerror.logでヒントを確認しましたか?そのテストのLogLevelを増やすことができます。 Apacheの場合は、 http://httpd.apache.org/docsを参照してください。 /2.2/mod/core.html#loglevel および http:/ /httpd.apache.org/docs/2.2/logs.html#errorlog

または多分 ldd-共有ライブラリの依存関係を出力できますこの問題を明らかにします:

<?php
$p = get_cfg_var('extension_dir');
$modpath = $p.DIRECTORY_SEPARATOR.'imagick.so';
echo $modpath, is_readable($modpath) ? ' readable':' not readable', "<br />\n";
echo '<pre>';
passthru('ldd '.$modpath.' 2>&1'); // in case of spaces et al in the path-argument use escapeshellcmd()
echo '</pre>';
このスクリプトは、コマンドラインとWebサーバーの両方で実行してください。依存関係の欠落について文句を言いますか?


edit2:そのため、<!> quot; within <!> quot;を実行するスクリプトウェブサーバーは拡張子.so ...を見ることさえできません...パスのどのポイントでトラブルが始まるかテストしましょう
<?php
function foo($path) {
  if ( $path==($dir=dirname($path)) ) {
    return;
  }
  foo($dir);

echo is_dir($path) ? ' d':' -', is_readable($path) ? 'r':'-', is_writable($path) ? 'w':'-', is_executable($path) ? 'x ':'- ', $path, "<br />\n"; }

$modpath = get_cfg_var('extension_dir').DIRECTORY_SEPARATOR.'imagick.so'; foo($modpath);

他のヒント

ubuntuを12.04から12.10にアップグレードした後、imagickで同様の問題が発生しました。

いじくり回した後、最終的に(php5の場合)別のパッケージが必要であることを発見し、次のように修正しました:

sudo apt-get install php5-imagick

使用しているオペレーティングシステムは何ですか? Mac OSXでいくつかの問題が発生したため、基本的にいくつかの拡張機能のインストールが非常に苦痛になります。ただし、ほとんどのオペレーティングシステムでは、Imagickのインストールは非常に簡単です。

コマンドラインでphp -iと入力します| grep ini、およびロードされているとしてリストされているphp.iniが、phpinfo()がロードされていると言うphp.iniと同じであることを確認します。これらが異なる場合は、そこから始めなければなりません。また、extension = imagick.soが両方のiniファイルにあることを確認します-同じディレクトリから拡張機能をロードしていることを確認します(99%の可能性がありますが、誰が知っている-あなたは例外かもしれません)。

(おそらく)両方のphp.iniファイルがimagick.soをロードし、まだ動作しないことを確認した後、tail -f / path / to / apache / error_logを試してください(apache、もちろん..)とApacheを再起動します。ここでは、ライブラリや拡張機能の読み込みに関するPHP警告を探しています。うまくいけば、正しい方向にあなたを向けることができます。

これがお役に立てば幸いです

ジム

私がやったこと:

画像の向きをDBに保存し、次にalternatiffを使用して、保存された向きに画像を動的に回転させます。画像の操作は必要ありません。

ご協力ありがとうございます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top