从Apache调用时出现Python错误,但在文件对象析构函数中没有关闭失败的命令行时出现错误:

时间:2011-11-10 17:18:59

标签: php python apache exec

我有一个Python脚本,当从命令行调用时可以很好地工作,但是当从在同一台机器上的Apache上运行的php脚本调用时会死掉。

错误meesage(从Apache错误日志中删除):

close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr

用PHP调用:

$exec_string = '/usr/bin/python /path/to/file/doSearch.py "' . $data[ 'term' ] . '"' . $id . ' &';
pclose( popen( $exec_string , 'r' ) );

Python文件正在处理数据,然后写回文件系统。

2 个答案:

答案 0 :(得分:0)

我认为你在第一个参数后错过了一个空格。试试这个:

$exec_string = '/usr/bin/python /path/to/file/doSearch.py "' . $data[ 'term' ] . '" ' . $id . ' &';
//      see hat here -->                                                           ^

您可能希望确保转移所有数据,以使其对CLI安全。

答案 1 :(得分:0)

您的流程应该有一些输出要在popen函数中执行。 但是,当直接关闭此读取文件流时,pclose将导致此异常。