PHP运行在服务器上,但不是命令行:“libssl.so.10:没有可用的版本信息”

PHP正在我的服务器上运行,但我无法让它运行命令行。 我运行这个文件:

<?php echo "done"; ?> 

使用这个命令:

 php test.php 

当我这样做,我得到这个错误:

 php: /usr/lib64/libssl.so.10: no version information available (required by php) 

任何想法,为什么这可能是? 服务器是活的,所以我希望在进行任何可能会破坏我的设置的更改之前了解这里发生了什么。 我需要PHP来运行命令行,所以我可以得到一个电子邮件接收脚本工作。 我在nginx上运行php-fpm。

感谢任何指针 –

这意味着共享库上的库版本号较低。

也许你的系统上有两个不同的openssl库。 你可能已经与一个链接,但PHP正在使用其他。

尝试:

 $ find / -name libssl.so* 

并看看安装的版本。 也看看

 $ ldd `which nginx` | grep ssl 

findnginx使用的库。

并检查

 $ ldd `which php` | grep libssl 

找出什么库的PHP使用。

你在什么操作系统?

你可以尝试升级到你的操作系统供应商提供的最新的openssl包,并重新启动nginx,以便它使用更新的库?

并从nginx.com/blog引用

如果你自己编译了NGINX,你可能会静态链接openssl库。 lddtesting将不会显示操作系统libssl.so库的依赖关系。 nginx -V会给你编译时选项,它应该显示你使用的选项。

这是我在我的testing系统中完成的工作,并且工作正常。查看上面的输出,它看起来像是在使用如此多版本的openssl。 请尝试找出您正在使用哪一个,同时删除一个不使用,并确保它不会打破其他function

  php test.php done ldd `which php`|grep -i libssl libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003edcc00000) rpm -qf /usr/lib64/libssl.so.10 openssl-1.0.0-27.el6_4.2.x86_64