有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!
点此加入该群jq.qq.comPHP调用Python失败的解决办法
假设有文件:php_test.php python_test.py
在php文件中运行Python:
如果运行Python出错并不能保存在数组array中,因此应该把标准错误重定向到文件中,以上代码改写如下:
在bash中0,1,2三个数字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。
也可以通过以下方式将标准错误重定向到标准输出保存到$array中:
然后就可以根据错误信息去寻求解决办法。
一般在终端通过命令运行PHP文件是可以马上看到错误信息的,但是通过浏览器运行PHP文件就只能上面所述方法去输出错误信息。因此问题也就是在命令行下PHP可以成功执行Python文件,而通过浏览器就不能成功运行,这是因为两种方式所调用的动态库不一致!
通过命令行方式调用的是系统中的已有的动态库,而通过浏览器方式调用的是Web服务器中的动态库。(我安装的XAMPP,所以通过浏览器方式调用的就是lampp/lib中的动态库)。
解决办法:
1.在输出的错误信息中找到出错的动态库
2.通过locate命令找到相关的动态库所在的位置:locate libxxx.so
3.将web服务器中的同名动态库删除或重命名
4.将通过第2步在系统中找到的动态库链接到web服务器的lib目录中
实例:
Python中使用hashlib模块时可能出现两个错误:
1.找出系统中包含libcrypto.so.1.0.0的所有路径:locate libcryto.so.1.1
2.将web服务器中的同名动态库重命名:
3.将系统中libcryto.so.1.1链接到web服务器的lib目录中:
libssl.so.1.0.0解决步骤同上。