我的Web服务器上有一个PHP文件,它应该调用python脚本(相同的文件夹),写入文件,然后获取其内容并显示数据。
PHP文件名为q.php
它包含
<?php
$tmp = exec("trivia.py");
sleep(4);
$homepage = file_get_contents('./testfile.txt', true);
echo $homepage + '<p>exec ret:' + $tmp;
echo exec("whoami");
?>
此文件调用trivia.py
写出文件(“./ testfile.txt”),然后php从文件中获取数据并显示它。我添加了一个变量来查看exec是否正常工作并返回0
。 PHP服务器由用户http
执行。
现在trivia.py
,我在文件顶部有以下行
#!/usr/bin/env python
当我SSH到服务器时,它执行得很好。从SSH我运行脚本,它创建上面指定的文件,网页工作正常。但是,如果我使用PHP文件来创建它,它将无法从Web上运行。
我很确定这与某些地方的权限有关,但我对Linux的权限并不是那么好。
系统信息:Synology Diskstation,DSM5,PHP5,Python 2.7
编辑:
trivia.py
currenlty拥有admin
所有者和群组users
的权限777
答案 0 :(得分:0)
通过exec运行文件时,您需要为文件提供完整路径,如果文件位于同一目录中,则无关紧要。
请尝试使用(假设文件位于/ var / www / public)
exec('/var/www/public/trivia.py');
答案 1 :(得分:-1)
对于Windows用户 - 问题已解决PHP exec python
我建议将此$tmp = exec("trivia.py");
替换为
$tmp = exec("C:\\Python27\\python.exe trivia.py");
// Add your python.exe route before the file
希望它有效!!