Запустив скрипт python с php — работает в консоли, но не в веб-браузере

#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»