2

さて、これが何が起こっているかの内訳です:

  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情報に表示されません。

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

4

4 に答える 4

3

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

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

sudo apt-get install php5-imagick
于 2012-11-10T01:36:59.977 に答える
2

正しい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:したがって、Webサーバーの「内部」で実行されているスクリプトは拡張子を表示することさえできません。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);

于 2009-06-23T20:10:17.250 に答える
0

私がやったこと:

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

でも助けてくれてありがとう。

于 2009-07-02T20:21:09.037 に答える
0

使用しているオペレーティング システムは何ですか? 私は 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 の警告をここで探しています。うまくいけば、それはあなたを正しい方向に向けるでしょう。

お役に立てれば、

ジム

于 2009-06-30T18:35:47.673 に答える