正しい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);