好的,这是关于什么的细分:
<? $foo = new Imagick(); ?>
从命令行运行时没有错误(例如,sudo php myscript.php Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1
。任何建议都将受到赞赏。
答案 0 :(得分:3)
将ubuntu从12.04升级到12.10后,我遇到了类似的想法问题。
经过多次摆弄后我终于发现需要一个不同的包(对于php5?)并修复它:
sudo apt-get install php5-imagick
答案 1 :(得分:2)
我认为你绝对相信你已经编辑了正确的php.ini ...
您是否检查了网络服务器的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 - print shared library dependencies可以解释这个问题:
<?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>';
请在命令行和网络服务器上运行此脚本。是否抱怨缺少依赖?
<?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);
答案 2 :(得分:0)
您使用的是哪种操作系统?我在Mac OSX上遇到了一些问题,这些问题基本上使安装一些扩展非常痛苦。但是,对于大多数操作系统来说,Imagick安装应该非常简单。
在命令行中,键入php -i | grep ini,并确保列出的php.ini与正在加载的phpinfo()所说的php.ini相同。如果这些不同,那就是你必须开始的地方。确保extension = imagick.so在两个ini文件中,同时 - 验证他们是从同一目录加载扩展名(他们有99%的可能性,但谁知道 - 你可能是一个例外)。
在您确认(可能)两个php.ini文件都加载了imagick.so并且它仍然无法正常工作之后,请尝试将-f / path / to / apache / error_log拖尾(假设您使用的是apache,当然..)并重启apache。您正在寻找有关加载库和/或扩展的php警告。希望它会指出你正确的方向。
希望这有帮助,
吉姆
答案 3 :(得分:0)
我最终做了什么:
在DB中存储图像的方向,然后使用alternatiff将图像动态旋转到存储的方向。无需图像处理。
感谢您的帮助。