安装 PHP 扩展到错误的 PHP 版本

安装 PHP 扩展到错误的 PHP 版本

我刚刚购买了一个 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,以防有帮助:

https://gist.github.com/Stayallive/dbb91ffa6f0fc6ca6ac3

答案1

卸载 PHP5.3.3 然后安装 imagemagic。阅读 yum 在屏幕上打印的内容(如果它没有尝试再次安装 PHP5.3.3)。

PS我刚刚读到你真正做了什么。您已经编译了 PHP5.6,并且它不再受包管理器支持。为什么需要 PHP5.6?您无需编译任何内容即可在 CentOS 上安装 PHP5.4。

相关内容