我的默认Web应用程序基于PHP.但是,为了方便起见,我构建了一个python脚本来进行一些分析.现在我需要php来调用python代码并检索python代码提供的输出.两个文件都在同一个服务器上,但不在同一个文件夹中.我当前的方法不...

我的默认Web应用程序基于PHP.但是,为了方便起见,我构建了一个python脚本来进行一些分析.现在我需要php来调用python代码并检索python代码提供的输出.两个文件都在同一个服务器上,但不在同一个文件夹中.我当前的方法不起作用,如下所示:
$cmd = "/usr/bin/python /var/www/include/sCrape.py -u '$my_url' ";
$response = shell_exec($cmd);
$response = json_decode($response, true);
现在当我尝试打印$response时,我得到了NULL对象(它应该返回一个我应该通过json_decode解码的数组字符串).我的功能有问题吗? php位于/ var / www / html /中.当两个文件位于同一目录中时,以下代码有效:
$cmd = "python sCrape.py -u '$my_url'";
$response = shell_exec($cmd);
$response = json_decode($response, true);
更多信息:my_url是从php输入的一个已清理的$_POST变量,但我现在已经尝试完全禁用清理来测试它是否可以工作,但它仍然没有(仍然,url的路径,直到它到达函数的时间更长) ,因为它必须通过form-post传递,而在我的同一文件夹测试用例中,我只是简单地声明$my_url). -u postfix意味着脚本输入了一个url.
非常感谢你提前!
解决方法:
您是否尝试在shell中运行/usr/bin/python /var/www/include/sCrape.py -u’$my_url’?错误可能就在那里.
尝试:
$cmd = "/usr/bin/python /var/www/include/sCrape.py -u '$my_url' 2>&1";
$response = shell_exec($cmd);
echo $response;
这应输出错误消息.
为什么?
shell_exec只返回标准输出(stdout)的输出,如果发生错误则写入“标准错误(stderr)”. 2>& 1将stderr重定向到stdout.见&1 ” mean?' rel='nofollow' target='_blank'>In the shell, what does “ 2>&1 ” mean?.
运行python代码
您可能希望在python脚本的第一行添加#!/usr/bin/env python并使其可执行chmod x /var/www/include/sCrape.py.之后,您应该能够在不显式调用python的情况下运行脚本. /var/www/include/sCrape.py -u’$my_url’
本文标题为:使用shell_exec从PHP中调用Python


基础教程推荐
- Centos安装python3 2023-11-15
- 如何在Windows中的python中创建服务? 2023-11-10
- python-字典dict和集合set 2023-08-04
- Shell命令从python失败,从shell正常 2023-11-12
- python – 合并预先排序的文件而不将所有内容读入内存 2023-11-16
- 如何在Windows上使用python使我的脚本每30分钟重复一次 2023-11-11
- linux下安装python3遇到的问题总结 2023-09-04
- python-如何使用子进程运行virtualenv软件包安装 2023-11-12
- Pytest fixture及conftest相关详解 2022-10-20
- pandas中df.rename()的具体使用 2022-08-30