执行一些 python 脚本 PhP 不起作用

Executing a few python scripts with PhP not working

想问一下,因为我正在设计一个网页,其中会有几个按钮,当按下这些按钮时会 运行 不同的 python 脚本。

现在我尝试了一个基本的例子,通过使用 jquery 和 php 将命令传递给 运行 只有一个 python 脚本首先打印出来终端控制台中的 hello world 但它不工作。我尝试搜索但似乎无法找到解决方案。有什么帮助吗? (其中一个是关于使用 fast-cgi 的?任何人都可以对此有所了解吗?)

注意: -我正在 Mac OS X 上编码并使用 XAMPP 但将通过安装 LAMPP 将此代码移植到 raspberry pi。 (因此,如果命令行和建议对于两个 OS 不同,我们将不胜感激)

我的代码:

下面是我在按下按钮时创建按钮的代码运行一个简单的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 路径名直接执行脚本,它也不起作用(它确实打印出一条随机测试消息,所以我相信这不是文件上的权限错误。) -关于执行 python 的 php 代码,我不熟悉使用它(我在论坛上发现(不记得在哪里但我试过但没有用),发现 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";

?>

您不想在这里使用 escapeshellcmd。该函数用于转义参数,以便用户无法输入 foo;reboot 并使您的系统重新启动。但是,由于您没有任何用户输入,因此不需要它。

相反你想要:

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

嗯,如果我稍微更改您的 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";

?>