我的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从文件中获取数据并显示它。 我添加了一个变量以查看可执行文件是否正常工作,它返回0
. PHP 服务器正在由用户http
执行。
现在对于trivia.py
,我在文件顶部有以下行
#!/usr/bin/env python
当我通过 SSH 连接到服务器时,它执行得很好。 从SSH我运行脚本,它创建上面指定的文件,网页工作正常。 但是,如果我使用 PHP 文件来创建它,它将无法在 Web 上运行。
我很确定这与某处的权限有关,但我对 Linux 的权限不是那么好。
系统信息: Synology Diskstation, DSM5, PHP5, Python 2.7
编辑:
trivia.py
currenlty 具有 777 作为权限admin
所有者和组users
通过exec运行文件时,您需要提供文件的完整路径,文件是否位于同一目录中并不重要。
请尝试使用(假设文件位于/var/www/public 中)
exec('/var/www/public/trivia.py');
对于 Windows 用户 -问题在这里解决了 PHP exec python
我建议用这个替换$tmp = exec("trivia.py");
$tmp = exec("C:''Python27''python.exe trivia.py");
// Add your python.exe route before the file
希望它有效!!