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 的所有者和组更改为您的服务器。
我有一个简单的 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 的所有者和组更改为您的服务器。