繁体   English   中英

Python脚本无法从PHP exec()执行

[英]Python Script Failing to Execute from PHP exec()

我有一个简单的PHP函数,它应该在调用时执行Pyton脚本。 我在我的php程序中多次尝试过这种函数,但不知怎的,这次函数根本没有执行python脚本。 当我从命令提示符访问脚本并运行python testing.py它成功执行。 有一件事我想提一下,这个脚本有一些严格的python的NLTK库实现,并且执行和执行它的操作需要20多秒(即数据处理和存储到db)。 执行中的延迟导致了这个问题,还是这次我还缺少其他的东西?

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

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

你必须使用python和你的文件的完整路径。 你可以从which python命令找到前者,最有可能输出'/ usr / bin / python',你应该已经知道后者了。 所以你的命令看起来像这样:

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

并且你应该确保你的python脚本具有所有适当的权限,因为你的web服务器很可能是以不同的用户身份运行,所以权限应该是“-rwxrwxr-x”或者接近的。

尝试使用python程序的确切路径。

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

尝试删除$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);
}

exec()或其他任何东西都没有问题。
问题是nltk模块无法找到nltk_data目录。 因为它只是找到系统中nltk_data的位置:通常是〜/ nltk_data。
现在导入在运行该函数时添加该路径。
import nltk;
现在,nltk.data.path是搜索模块的位置列表。
你可以做nltk.data.path.append(“你的位置/目录”);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM