Выполните программу Python с помощью PHP

Я могу просто выполнить программу Python с помощью PHP как это? (в браузере)

exec("python myProgram /Applications/MAMP/htdocs/somefile.xml");

или как это:

exec("/path/to/python path/to/myProgram /Applications/MAMP/htdocs/somefile.xml");

Какой-либо этот метод корректен?

В противном случае, каков должен быть правильный способ сделать это?

Спасибо

1
задан ssdesign 18 July 2010 в 17:22
поделиться

3 ответа

Я бы предпочел использовать proc_open () , как предлагает mvds, поскольку вы не можете писать в STDIN или читать из STDOUT с помощью exec () / shell_exec () , а также предоставляет собственный набор переменных окружения - $ _ ENV .

Пример фрагмента, извлеченный из моего кода:

$process = proc_open(
    "{$command}",
    array(            
     array('pipe', 'r'),
     array('pipe', 'w'),
     array('pipe', 'w')
    ),
    $pipes,
    NULL,
    $_ENV
);

if(is_resource($process)){

    fwrite($pipes[0], $string);
    fclose($pipes[0]);

    $rt = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $rtErr = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    $exitCode = proc_close($process);

}

Подробнее: http://php.net/manual/en/function.proc-open.php

1
ответ дан 2 September 2019 в 22:57
поделиться

Ага, почему бы и нет?

Обратите внимание, что вы выполняете это не «в браузере», а на стороне сервера, в то время как страница проходит предварительную обработку.

Учтите, что страница не вернется, пока не завершится exec , так что это действительно зависит от того, что именно вы пытаетесь сделать.

0
ответ дан 2 September 2019 в 22:57
поделиться

, если вы также хотите захватить вывод, используйте proc_open (полное подключение к fd, т.е. вход и выход) или popen (вход или выход)

1
ответ дан 2 September 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: