情景:
我有一个php页面,我在其中调用python脚本。
在命令行(Linux)上运行时,Python脚本在命令行上显示输出,并将输出写入文件。
通过php运行时的Python脚本也没有。
精化:
我在PHP中使用一个简单的系统命令来运行python脚本:
/var/www/html/1.php: system('/ usr / python / bin / python3 ../cgi-bin/tabular.py 1');
/var/www/cgi-bin/tabular.py - 这个python文件基本上解析数据文件,使用python的正则表达式搜索特定标题并将标题输出到标准输出,并将其写入文件。
这个python脚本中有一些例程可以执行,因此我将print语句调试。我注意到PHP页面中只有一些初始打印语句的输出,所有来自实际执行某些操作的函数都没有看到。
另外,作为我测试的一部分,我认为py脚本位于不同的文件夹中,所以让我将其更改为/ var / www / html文件夹,不要去。
我希望我能够充分详细地捕获问题陈述,并且有人能够在最后重现这个问题。如果我自己在这个上取得任何进展,我会诠释这个问题。谢谢大家。
拉夫
答案 0 :(得分:2)
我打赌你的py脚本有一些错误,当它从PHP内部调用时它会破坏它。 尝试
passthru('/usr/python/bin/python3 ../cgi-bin/tabular.py 1 2>&1');
进行调查(请注意 2>& 1 ,这会导致stderr被写入stdout)。
答案 1 :(得分:1)
很可能出现权限问题。
如果apache以apache
运行,那么它将无权写入文件,除非
apache
apache
和组可写这是多用户计算机上的“粘性”问题,因为不同的人可以访问Apache。
在文件上尝试chmod 666 output.txt
,然后重新运行测试。
<强>考虑:强>
答案 2 :(得分:0)
检查python脚本正在运行的用户是否具有CWD的写入权限。另外,尝试使用shell_exec()或passthru()来调用脚本,而不是system()。