ошибка при использовании exec () для вызова скрипта python

Я пытаюсь вызвать простой скрипт python

#!/usr/local/python25/bin/python print "hello world" 

из следующего скрипта php

  <?php echo exec("/usr/local/python25/bin/python myfile.py"); ?> 

Но ничего не случилось. Скажите, пожалуйста, что здесь не так? (Я также проверил другую тему, но я не мог решить свою проблему)

Вопрос Решенный: я забыл дать разрешение на доступ / usr / local / python25 / bin / python. После этого я решил проблему. Большое вам спасибо за вашу помощь!

Related of "ошибка при использовании exec () для вызова скрипта python"

1. Функция exec просто возвращает последнюю строку из результата команды.
2. Оператор печати в python (кроме python 3) автоматически добавляет новую строку в конце.

Вот почему вы чувствуете, что ничего не случилось.

Таким образом вы можете поймать весь результат.

 exec("/usr/local/python25/bin/python myfile.py 2>&1", $output); print_r($output); 

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

Убедитесь, что скрипт исполняемый любым пользователем PHP работает как – chmod 777 myfile.py , и просто для того, чтобы быть безопасным chmod 777 /usr/local/python25/bin/python . Кроме того, убедитесь, что скрипт python находится в том же каталоге, что и скрипт PHP, что и требует ваш метод его вызова.

Попробуйте изменить свой скрипт PHP на это и скажите мне, что вы видите: ( EDITED )

 <?php // Path to the python script - either FULL path or relative to PHP script $pythonScript = 'myfile.py'; // Path to python executable - either FULL path or relative to PHP script $pythonExec = '/usr/local/python25/bin/python'; // Check the file exists and PHP has permission to execute it clearstatcache(); if (!file_exists($pythonExec)) { exit("The python executable '$pythonExec' does not exist!"); } if (!is_executable($pythonExec)) { exit(("The python executable '$pythonExec' is not executable!")); } if (!file_exists($pythonScript)) { exit("The python script file '$pythonScript' does not exist!"); } // Execute it, and redirect STDERR to STDOUT so we can see error messages as well exec("$pythonExec \"$pythonScript\" 2>&1", $output); // Show the output of the script print_r($output); ?> 

Если вы хотите захватить субпроцесс 'stdout, вы должны использовать passthru

Также вам не нужна первая строка этого скрипта python, если вы напрямую вызываете интерпретатор python.