PHP exec()无法执行Python脚本

6 投票
4 回答
26904 浏览
提问于 2025-04-17 20:06

我有一个简单的PHP函数,应该在被调用时执行一个Python脚本。我在我的PHP程序中尝试过这种函数很多次,但这次这个函数根本没有执行Python脚本。当我从命令提示符访问这个脚本并运行python testing.py时,它可以成功执行。我想提到的是,这个脚本使用了Python的NLTK库,执行起来比较复杂,通常需要超过20秒才能完成操作(比如数据处理和存储到数据库)。我在想,是不是这个执行的延迟导致了问题,还是说我这次漏掉了什么其他的东西?

function success(){
   $mystring = exec('python testing.py');
   $mystring;
   if(!$mystring){

        echo "python exec failed";
            }
   else{
   echo "<br />";
   echo "successfully executed!";
   }

4 个回答

0

试着去掉 $mystring; 这一行

function success() {
   $mystring = exec('python testing.py');
   if(!$mystring){
       echo "python exec failed";
   } else {
       echo "<br />";
       echo "successfully executed!";
   }
}

为了测试,可以试试:

function success() {
   $mystring = exec('python testing.py', $output);
   var_dump($output);
}
1

试着使用Python程序的准确路径。

$mystring = exec('python testing.py');
15

你需要使用完整的路径来指定python和你的文件。你可以通过输入which python命令来找到python的完整路径,这个命令通常会输出'/usr/bin/python',而你应该已经知道你的文件的路径。所以你的命令应该像这样:

$mystring = exec('/usr/bin/python /home/user/testing.py');

另外,你还要确保你的Python脚本有合适的权限,因为你的网页服务器很可能是以不同的用户身份运行的,所以权限应该设置为"-rwxrwxr-x"或者类似的设置。

撰写回答