Python 文件不会从 php 运行


Python file will not run from php

我的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

希望它有效!!