У меня есть 2 сценария.
1 — php web-скрипты, которые собирают информацию от пользователя и выполняют скрипт на python с отправкой всех собранных данных в качестве аргументов
2 — скрипт Python, который получает аргументы из php-скрипта с использованием sys.argv и обновляет MySQL с использованием MySQLdb
Когда я запускаю скрипт Python через командную строку — он работает как шарм. Он делает все, что должен. Но когда я пытаюсь выполнить скрипт Python с использованием PHP-скрипта — ничего не происходит, пока я не удаляю импорт MySQLdb из моего скрипта Python.
Как только я удаляю «import MySQLdb» из моего скрипта python — PHP скрипт может выполнить его, и они оба работают (кроме обновления MySQL).
У вас есть и идея, что идет не так?
Постскриптум
Я пытался получить ошибку
в файле Python я использую это:
import traceback
import sys
import MySQLdb
# Some classes and functions
if __name__ == '__main__':
try:
main()
except Exception, err:
print traceback.format_exc()
и в php я использую:
$result = shell_exec("/usr/bin/python /FULL_PATH_TO/script.py $argument";
echo $result;
И все же … ничего. веб-страница просто перезагружается, не давая никакой информации
Я столкнулся с той же проблемой. Ключевая проблема здесь в том, что ваш скрипт на Python ничего не выводит!
и ключ, чтобы узнать, что произошло, это то, что вам нужно знать, здесь произошла ошибка, но вы не можете увидеть вывод ошибки. Вам нужно проверить этот вопрос:
PHP-скрипт не может получить вывод из Python-скрипта
краткий ответ: вам нужно выполнить exec и поместить вывод ошибки (stderr) в стандартный вывод. вам нужно сделать что-то вроде:
exec (‘python hello-numpy.py 2>&1’ );
и вы увидите проблему, которая должна заключаться в том, что для библиотеки MySQLDB требуется разрешение, которое было отклонено.
Как получить разрешение? Нужно, что, это совсем другой вопрос 🙂
Других решений пока нет …