2

好的,以下是对发生的情况的细分:

  1. <? $foo = new Imagick(); ?>从命令行运行时可以正常工作(例如,sudo php myscript.php
  2. 但是,当通过网络浏览器运行时,我得到Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1.
  3. 魔法棒没有安装
  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...
你检查过网络服务器的 error.log 以获取提示吗?您可能希望增加该测试的 LogLevel。如果是 apache,请参阅http://httpd.apache.org/docs/2.2/mod/core.html#loglevelhttp://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>';
请在命令行和网络服务器上运行此脚本。它是否抱怨缺少依赖项?


编辑2:所以在网络服务器“内”运行的脚本甚至看不到扩展名.所以......让我们测试一下问题开始的路径点
<?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

您使用什么操作系统?我在 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 回答
0

我最终做了什么:

将图像的方向存储在数据库中,然后使用 alternatiff 将图像动态旋转到存储的方向。无需图像处理。

不过感谢您的帮助。

于 2009-07-02T20:21:09.037 回答