Получение PHP для запуска Python script

Я пытаюсь запустить программу Python с помощью PHP. Здесь код

$command = '/usr/local/bin/python script.py file';
$temp = exec($command, $output);

Это работает через командную строку, но не запускается через браузер. Я использую Apache, поэтому, возможно, ему нужны правильные привилегии? Я новичок в Linux и понятия не имею, как это сделать.

Любая помощь будет оценена!

Изменить 1:

Пытался использовать proc_open, но ничего не происходит. Я дал полный путь к script. Сделал исполняемый файл script, но не повезло. Любые другие вещи, которые я могу попробовать на сервере? (Это CentOS 5)

Ответы

Ответ 1

Вам необходимо передать полный путь к script, и вам также необходимо убедиться, что script читается пользователем, выполняющим веб-сервер (что означает, что каждый каталог в пути должен быть + x на веб-пользователя).

Ответ 2

Понял, что не так:

  • Домен был настроен как виртуальный хост, и PHP safe_mode был включен. proc_open, exec, system, passthru и т.д. не работают под safe_mode. Думаю.

  • Поместите script в каталог, доступный для vhost. Apache не смог получить доступ к каталогам за пределами корня документа vhost.

Спасибо за помощь!

Ответ 3

Несколько контрольных точек

  • script.py должен пройти полный путь, например /home/abhinav/script.py
  • script.py должен быть исполняемым, chmod +x script.py

Ответ 4

Чтобы получить помощника CodeIgniter для запуска python script, мне пришлось помещать #!/usr/bin/python в первую строку моего python script и НЕ вызывать 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;
    }
?>