我刚刚购买了一个 VPS,它附带了 PHP5.3.3,这对我们的网站来说并不好,所以我成功(看起来是这样)安装了 PHP5.6.7 并成功在 Plesk 上注册。
对于相关网站,我在 Plesk 的托管设置中选择了 5.6.7,一切正常。通过查看我可以看到phpinfo()
正在使用正确的版本。
当我对此感到满意后,我继续安装 imagick 和 memcache,这是我们网站所需的另外两个扩展。两者似乎都安装得很好,没有任何错误,并将扩展添加到正确的 php.ini 文件(从 phpinfo 获取正确的路径)并重新启动 apache:
extension=memcache;
extension=imagick;
$ service httpd restart
这就是我看到问题的地方。我检查 phpinfo 并且扩展名不可见,并且我在我的应用程序中确认了这一点:
if (extension_loaded('imagick')) {
echo 'IMagick extension loaded okay.';
} else {
echo 'IMagick extension not loaded! Meh!';
}
然后我运行此命令来找出哪个文件夹用于扩展:
$ php-config --extension-dir
它返回:
/usr/lib64/php/modules
但是当我检查我的 phpinfo 时extensions_dir
有这样的内容:
/php/php-5.6.7/lib/php/extensions/no-debug-non-zts-20131226
然后,我通过查看哪些扩展目录具有imagick.so
扩展名进行了更多研究;/usr/lib64/php/modules
有扩展名,但目录 phpinfo 说它应该在没有扩展名。我还通过进入 Plesk 并切换回 5.3.3 并检查 phpinfo 的内容来确认这一点。我安装的两个扩展都已列出并且运行良好!它安装正常,但似乎 PHP 版本错误。
我想我会尝试将扩展名从它所在的位置复制到它应该在的位置:
$ cp /usr/lib64/php/modules/imagick.so /php/php-5.6.7/lib/php/extensions/no-debug-non-zts-20131226/imagick.so
并在重新启动 httpd 之前测试该文件是否存在于新文件夹中 - 但再次没有任何运气。
很明显,扩展(可能还有模块)被安装到 PHP5.3.3 目录中,而不是 5.6.7 目录中,但是这是如何发生的呢?我应该先更改cd /php/php-5.6.7
目录然后运行安装命令吗?这些是我在以 root 身份登录后用于安装 imagick 的类似命令:
$ yum install ImageMagick ImageMagick-devel
$ pecl install imagick
$ echo "extension=imagick.so" > /etc/php.d/imagick.ini
有人可以非常好心地与我分享运行全新的 imagick 安装所需的命令,但要使用正确的 PHP 版本吗?或者分享一种轻松解决问题的方法?
我真的很感谢任何帮助我解决这个问题的帮助。
这是我用于安装 PHP5.6.7 的 GIST,以防有帮助:
答案1
卸载 PHP5.3.3 然后安装 imagemagic。阅读 yum 在屏幕上打印的内容(如果它没有尝试再次安装 PHP5.3.3)。
PS我刚刚读到你真正做了什么。您已经编译了 PHP5.6,并且它不再受包管理器支持。为什么需要 PHP5.6?您无需编译任何内容即可在 CentOS 上安装 PHP5.4。