解决php运行python脚本失败的方法

这篇文章将为大家详细讲解有关解决php运行python脚本失败的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站建设、外贸营销网站建设、保定网络推广、微信小程序、保定网络营销、保定企业策划、保定品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供保定建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

假设有文件:php_test.php  python_test.py

在php文件中运行Python:

exec("python python_test.py", $array, $ret);

如果运行Python出错并不能保存在数组array中,因此应该把标准错误重定向到文件中,以上代码改写如下:

exec("python python_test.py 2>error.txt", $array, $ret);

在bash中0,1,2三个数字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。也可以通过以下方式将标准错误重定向到标准输出保存到$array中:

exec("python python_test.py 2>error.txt 2>&1", $array, $ret);

然后就可以根据错误信息去寻求解决办法。

一般在终端通过命令运行PHP文件是可以马上看到错误信息的,但是通过浏览器运行PHP文件就只能上面所述方法去输出错误信息。因此问题也就是在命令行下PHP可以成功执行Python文件,而通过浏览器就不能成功运行,这是因为两种方式所调用的动态库不一致!通过命令行方式调用的是系统中的已有的动态库,而通过浏览器方式调用的是Web服务器中的动态库。(我安装的XAMPP,所以通过浏览器方式调用的就是lampp/lib中的动态库)。

解决办法:

1、在输出的错误信息中找到出错的动态库。

2、通过locate命令找到相关的动态库所在的位置:locate libxxx.so。

3、将web服务器中的同名动态库删除或重命名。

4、将通过第2步在系统中找到的动态库链接到web服务器的lib目录中。

实例:

Python中使用hashlib模块时可能出现两个错误:

relocation error: python: symbol OpenSSL_add_all_digests, version OPENSSL_1.0.0 not defined in file 
libcrypto.so.1.0.0
with link time reference

python: /opt/lampp/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.2' not found (required by /opt/lampp/lib/libssl.so.1.0.0)

1.找出系统中包含libcrypto.so.1.0.0的所有路径:locate libcryto.so.1.1

/home/ubuntu/.cache/vmware/drag_and_drop/52091a33-81b7-cc30-d88c-574c47558e32/ndk/libimobiledevice-android-master/
openssl/libcrypto.so.1.0.0
/home/ubuntu/.cache/vmware/drag_and_drop/52091a33-81b7-cc30-d88c-574c47558e32/ndk/libimobiledevice-android-master/
out/fsroot/lib/libcrypto.so.1.0.0
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/opt/lampp/lib/libcrypto.so.1.0.0

2.将web服务器中的同名动态库重命名:sudo mv /opt/lampp/lib/libcryto.so.1.1 /opt/lampp/lib/libcryto.so.1.1.bak

3.将系统中libcryto.so.1.1链接到web服务器的lib目录中:sudo ln -s  /lib/x86_64-linux-gnu/libcrypto.so.1.0.0  /opt/lampp/lib/libcryto.so.1.1

libssl.so.1.0.0解决步骤同上。

关于解决php运行python脚本失败的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

新闻标题:解决php运行python脚本失败的方法
标题链接:https://www.cdcxhl.com/article24/pdpice.html

成都网站建设公司_创新互联,为您提供面包屑导航营销型网站建设搜索引擎优化网站建设网站设计公司品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设