php中的popen()可以从命令行工作,但不能从浏览器工作


popen() in php works from command line but not from browser

我有一个简单的php脚本,可以从html表单中解析用户输入。由于Python处理字符串处理得很好,所以我实际上是用Python编写解析器的。因此,我将用户输入的字符串转发到python脚本中,以便使用进行处理

    $query = "avocados"; // from HTML form 
    $handle = popen("./NLParser.py $query","r");
    $read = fread($handle,2048);
    pclose($handle);

当我从命令行解释器执行php时,我得到了所需的输出。但当我从浏览器访问同一个php文件时,我会从fread()中得到空字符串。我试着检查$handle是否为FALSE,我也从stderr中读取,没有问题。请帮我弄清楚这个不一致的地方。

我试着运行

phpinfo();

命令行php解释器使用的php.ini文件是

Loaded Configuration File => /etc/php5/cli/php.ini

网络上的同一条目是

Loaded Configuration File   /etc/php5/apache2/php.ini

我使用的是Ubuntu 14.04.1 LTS和PHP版本5.5.9-1ubuntu4.4。所有文件的权限都设置为755

尝试将NLParser.py的所有者和组更改为服务器的所有者和分组。

相关文章: