我的默认 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 到达函数之前的路径更长,因为它必须通过表单发布传递,而在我的同一文件夹测试用例中,我只是声明了 $my_url)。 -u 后缀表示脚本输入一个 url。
预先非常感谢您!
你尝试过跑步吗/usr/bin/python /var/www/include/sCrape.py -u '$my_url'
在一个壳里?错误可能就在那里。
Try:
$cmd = "/usr/bin/python /var/www/include/sCrape.py -u '$my_url' 2>&1";
$response = shell_exec($cmd);
echo $response;
这应该输出一条错误消息。
Why?
shell_exec
仅从标准输出 (stdout) 返回输出,如果发生错误,则会将其写入“到”标准错误 (stderr)。2>&1
将 stderr 重定向到 stdout。看.
运行Python代码
您可能想要添加#!/usr/bin/env python
在 python 脚本的第一行并使其可执行chmod +x /var/www/include/sCrape.py
。之后您应该能够运行脚本而无需显式调用 python。/var/www/include/sCrape.py -u '$my_url'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)