Выполнение нескольких сценариев Python с PhP не работает

Хотелось бы спросить, так как я проектирую веб-страницу, в которой будет несколько кнопок, которые при нажатии будут запускать разные скрипты Python.

Сейчас я попробовал базовый пример, используя jquery и php, чтобы передать команду для запуска только одного скрипта Python, который сначала выводит hello world на терминальную консоль, но он не работает. Я попытался найти, но не смог найти решение. Любая помощь? (Один из них был об использовании fast-cgi? Кто-нибудь может пролить свет на это?)

Замечания:
-Я кодирую на Mac OS X и использую XAMPP, но перенесу этот код на raspberry pi с установкой LAMPP. (Следовательно, командная строка и советы, если они различаются для двух ОС, будут высоко оценены)

Мой код:

Ниже приведены коды, где я создаю кнопку, когда при нажатии она запускает простой скрипт на Python

main.php

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/general_v2.js"></script>
</head>

<body>

<button id="button_py1" type="button">Press to test Py</button>

</body>
</html>

ниже приведен код из general_v2.js

$(document).ready(function(){
$('#button_py1').click(function() {
e.preventDefault();

$.ajax({
type: "POST",
url: "z_py/py_run.php",


success: function(output_string){
console.log("js_success");

},
error:function(err){
//handle error
alert('Error submitting form' + err);
}

});
});
});

ниже приведен код для py_run.php

<?php
$command = escapeshellcmd("python z_py/testPyscript.py");
$output = shell_exec($command);
echo $output;
echo  "php_works";

?>

файл python:

#! /usr/bin/env python

print "hello world python script"

Редактировать:
-Я попытался выполнить сценарий напрямую, введя URL-адрес пути, он тоже не работает (он печатает, чтобы вывести случайное тестовое сообщение, поэтому это не ошибка разрешения файла, который я считаю).
-Что касается кода php при запуске python, я не знаком с его использованием (я обнаружил, что в forumn (не могу вспомнить, где я пробовал и не работает), также узнал о команде exec и попробовал ее, как показано ниже, и это тоже не работает:

Это моя альтернативная попытка использования exec (py_run.php)

<?php
$command = "python z_py/testPyscript.py";
exec($command);

?>

РЕШИТЬ!
благодаря @Shawn Mehan

Решение состоит в том, что файл python уже находится в том же каталоге, что и файл php, поэтому удаление пути разрешает проблему.

обновленный код:

<?php
$command = escapeshellcmd("/usr/bin/python testPyscript.py");
$output = shell_exec($command);
echo $output;
echo  "php_works";

?>

1

Решение

Ну, твой код работает для меня, если я немного изменю твой py_run.php, чтобы включить путь к python, например:

<?php
$command = escapeshellcmd("/path/to/python/python z_admin_face/testPyscript.py");
$output = shell_exec($command);
echo $output;
echo  "php_face2";

?>
0

Другие решения

Вы не хотите использовать escapeshellcmd Вот. Эта функция предназначена для экранирования аргументов, чтобы пользователь не мог войти foo;reboot и перезагрузите систему. Однако, поскольку у вас нет ввода пользователя, он вам не нужен.

Вместо этого вы хотите:

$output = shell_exec("python z_admin_face/testPyscript.py");
0

По вопросам рекламы [email protected]