#python #php #shell-exec
Вопрос:
Я создаю API в PHP, который передает некоторые параметры python и генерирует отчет в формате pdf. в report_gen.py файл У меня есть код для получения параметров и создания pdf-файла. Который успешно работает через командную строку, но когда я запускаю PHP-файл из браузера или почтальона, он не работает. Я хочу запустить свой PHP-файл через cronjob, чтобы он автоматически вызывался в определенное время.
$данные = «Базовый Уилл Джонни Уилсон Смит»;
$command = escapeshellcmd(«python3 report_gen.py $данные»);
$вывод = shell_exec (команда$); эхо $вывод;
Ответ №1:
Могут быть (по крайней мере) две проблемы.
Сначала вам нужно проверить/узнать, что серверная горничная использует другую среду. Я полагаю, что вы не использовали пользователя веб-сервера для своих локальных проверок. Поэтому я бы попытался использовать абсолютные пути. Вы также должны убедиться, что среда python (независимо от того, что вы настроили) должна совпадать с вашим локальным пользователем.
Во-вторых, вам нужно убедиться, что у вас есть все права на запуск файла (веб-сервер, который используется веб-сервером, должен иметь по крайней мере право на чтение report_gen.py).
Комментарии:
1. report_gen.py есть разрешение 644. И как использовать веб-сервер-пользователя с абсолютными путями. Любой синтаксис.
2. абсолютные пути: Окна: «C.\python\python.exe C:\bla\fasel\blub\report_gen.py», Linux: «/usr/bin/python /bla/fasel/blub/report_gen.py»
3. Я попытался использовать абсолютный путь, но не работал через браузер. Есть какое-нибудь другое решение?
4. Вы работаете на Linux? Вы можете перенаправить вывод ошибки (stderr) на стандартный вывод (stdout), чтобы узнать, есть ли какая-либо ошибка при выполнении команды: «/usr/bin/python /bla/fasel/blub/report_gen.py 2>amp;1»