我在OS X Lion上使用XAMPP 1.7.3编译和运行PHP Imagick扩展时有一些麻烦。
当启动Apache时,我在PHP错误日志中得到以下错误(并且扩展没有显示在phpinfo()
输出中):
[16-Aug-2011 12:42:31] PHP Warning: PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/imagick.so' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/imagick.so, 9): no suitable image found. Did find:
/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/imagick.so: mach-o, but wrong architecture in Unknown on line 0
我安装了XAMPP开发包。
我使用Homebrew安装Imagick 6.7.1-1:
brew install imagemagick
brew link imagemagick
为了安装Imagick扩展,我使用了XAMPP提供的PECL:
cd /Applications/XAMPP/xamppfiles/bin
sudo ./pecl install imagick
当提示输入ImageMagick的位置时,我尝试了以下路径(结果相同):
/usr/local/bin
/usr/local/Cellar
您可以在这里看到完整的输出:https://gist.github.com/1149849
此外,我尝试从PECL网站抓取Imagick PECL(3.0.1和3.1.0b) tar并从头开始编译:
/Application/XAMPP/xamppfiles/bin.phpize
./configure --with-imagick=/usr/local/bin --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config-5.3.1
make
sudo make install
make test
您可以看到以下输出:https://gist.github.com/1149875
我在不同的网站上偶然发现了一些关于这个话题的文章,但没有一篇能帮助我解决这个问题。
我也尝试过MacPorts for ImageMagic,结果相同(在编译期间使用/opt/local
作为路径)。
如有任何建议,不胜感激。
注意:为了记录,我能够在另一台OS X Lion机器上重现此问题。
PHP Warning: PHP Startup: Unable to load dynamic library '../imagick.so' {Snip}....no suitable image found. Did find:
imagick.so: mach-o, but wrong architecture in Unknown on line 0
它清楚地表明,扩展在那里,但架构与内核不同。也许你被引导到64位内核&试图运行32版本,反之亦然。
用正确的arch引导进入内核
[1] Mac OS X v10.6:启动32位或64位内核