Я пытаюсь запустить программу Python с помощью PHP. Вот код
$command = '/usr/local/bin/python script.py file'; $temp = exec($command, $output);
Это работает через командную строку, но не во время ее запуска через браузер. Я использую Apache, поэтому, возможно, ему нужны правильные привилегии? Я довольно новичок в Linux и понятия не имею, как это сделать.
Любая помощь будет оценена!
Изменить 1:
Пытался использовать proc_open
но ничего не происходит. Я дал полный путь к скрипту. Сделал скрипт исполняемым, но не повезло. Любые другие вещи, которые я могу попробовать на сервере? (Это CentOS 5)
Вам необходимо передать полный путь к скрипту, и вам также необходимо убедиться, что сценарий читается пользователем, работающим на веб-сервере (что означает, что каждый каталог в пути должен быть + x для пользователя сети).
Понял, что случилось:
Домен был настроен как виртуальный хост, и включен режим safe_mode PHP. proc_open, exec, system, passthru и т. д. не работают под safe_mode.
Поместите скрипт в каталог, доступный для vhost. Apache не смог получить доступ к каталогам вне корня документа vhost.
Спасибо за помощь!
Несколько контрольно-пропускных пунктов
/home/abhinav/script.py
chmod +x script.py
Чтобы получить помощника CodeIgniter для запуска скрипта python, мне пришлось поставить #! / Usr / bin / python в первую строку моего сценария python и НЕ вызывать python из exec.
+1 для выполнения chmod + x
Мой помощник выглядит так:
<?php function scrape($site, $key, $user_id) { $cmd = str_replace('system/','',BASEPATH).APPPATH."python/spider.py -u $site -k $key -i $user_id"; $resp = exec($cmd, $out); return $out; } ?>