Сценарий Python, не выполняющийся с помощью PHP exec ()

У меня есть простая функция PHP, которая должна выполнять скрипт Pyton при его вызове. Я пробовал эту функцию несколько раз в своих php-программах, но как-то на этот раз эта функция вообще не выполняет скрипт python. Когда я получаю доступ к скрипту из командной строки и запускаю python testing.py он успешно запускается. Одна вещь, которую я хочу упомянуть, что этот скрипт имеет некоторые серьезные реализации библиотеки NLTK python и занимает более 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 имеет все необходимые разрешения, потому что ваш веб-сервер, скорее всего, работает как другой пользователь, поэтому разрешения должны быть «-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 («ваше местоположение / каталог»);