Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用shell_exec从PHP中调用Python_Php_Python_Shell_Post_Shell Exec - Fatal编程技术网

使用shell_exec从PHP中调用Python

使用shell_exec从PHP中调用Python,php,python,shell,post,shell-exec,Php,Python,Shell,Post,Shell Exec,我的默认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($r

我的默认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是作为一个经过清理的$POST变量从php输入的,但我现在尝试完全禁用清理以测试它是否有效,但仍然没有(不过,url到达函数之前的路径更长,因为它必须通过表单post传递,而在我的同一个文件夹测试用例中,我只是声明了$my_url)。-u后缀表示脚本输入url


非常感谢!您是否尝试在shell中运行
/usr/bin/python/var/www/include/sCrape.py-u'$my_url'
?错误可能就在这里

尝试:

这将输出一条错误消息

为什么?
shell\u exec
仅返回标准输出(stdout)的输出,如果发生错误,则将其写入“标准错误”(stderr)。
2>&1
将stderr重定向到stdout。请参阅

运行python代码
您可能希望在python脚本的第一行添加
#!/usr/bin/env python
,并使其可执行
chmod+x/var/www/include/sCrape.py
。之后,您应该能够在不显式调用python的情况下运行脚本。
/var/www/include/sCrape.py-u'$my\u url'

非常感谢您的支持回答!然而,不幸的是,这并没有解决我的问题:/你还能想到什么吗?可能是后期清理破坏了url吗?添加了
2>&1
$response
的值是多少?我认为这是权限问题。老兄,请拥抱一下……shell\u exec中的2>&1运行良好,我可以终于调试了我的代码…非常感谢mcuc!你也可以看看这个吗?
$cmd = "/usr/bin/python /var/www/include/sCrape.py -u '$my_url' 2>&1";
$response = shell_exec($cmd);
echo $response;