Хотелось бы спросить, так как я проектирую веб-страницу, в которой будет несколько кнопок, которые при нажатии будут запускать разные скрипты 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";
?>
Ну, твой код работает для меня, если я немного изменю твой 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";
?>
Вы не хотите использовать escapeshellcmd
Вот. Эта функция предназначена для экранирования аргументов, чтобы пользователь не мог войти foo;reboot
и перезагрузите систему. Однако, поскольку у вас нет ввода пользователя, он вам не нужен.
Вместо этого вы хотите:
$output = shell_exec("python z_admin_face/testPyscript.py");