Ошибка Python при вызове из Apache, но не из командной строки с закрытием сбоя в деструкторе файлового объекта: - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть скрипт Python, который отлично работает при вызове из командной строки, но умирает при вызове из php-скрипта, работающего на Apache на той же машине.

Сообщение об ошибке (удалено из журнала ошибок 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 голосов
/ 17 июля 2014

Должно быть несколько выходов из вашего процесса, которые должны быть выполнены в функции popen.Тем не менее, pclose вызовет это исключение, если непосредственно закроет этот поток чтения файла.

0 голосов
/ 10 ноября 2011

Я думаю, вам не хватает пробела после первого аргумента.Попробуйте это:

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

Вы, вероятно, хотите убедиться, что вы также избегаете всех этих данных, чтобы сделать их безопасными для CLI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...