2015-09-02 2 views
0

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

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

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

Мой код:

Ниже приведены коды, где с помощью создать кнопку, когда на прессе работает простой питон скрипт

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"; 

?> 

файл питон:

#! /usr/bin/env python 

print "hello world python script" 

Edit: -Я пытался выполнить скрипт непосредственно путем ввода имени URL пути его does't работа либо (он печатает, чтобы выдать случайное тестовое сообщение, так что это не ошибка разрешения для файла, на который я верю.) -Отправляя 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"; 

?> 

ответ

0

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

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

?> 
+0

Я попытался заменить это на $ command = escapeshellcmd ("/ usr/bin/python z_admin_face/testPyscript.py"); – peekaboo

+0

Это правильный путь для mac os x? "/ usr/bin/python" Причина, когда я помещаю полный путь, ничего не печатается в окне терминала – peekaboo

+0

попробуйте 'which python' в строке cmd, чтобы узнать, где живет ваш python. и, как писал @Shel, вам нужно убедиться, что у вас достаточно пути для доступа к 'testPyscript.py'. Чтобы было легко, если у вас возникли проблемы, поместите pyscript.py в * same * dir как py_run.php, чтобы удалить любые проблемы с контуром. –

0

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

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

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

только что попробовал, не работает – peekaboo

+0

никакого вреда в том, чтобы быть бдительным. Excapeshellcmd ничего не болит, так почему бы не оставить его? –

+0

попробуйте включить полный путь к бинарнику python, например, предложенный @Shawn, а также полный путь к скрипту python. Я подозреваю, что вы уже находитесь в каталоге «z_py», когда запускается скрипт php. – Shelvacu