【问题标题】:cant execute python script from php, in the client side无法在客户端从 php 执行 python 脚本
【发布时间】:2015-07-17 04:31:05
【问题描述】:

我是 PHP 和 Apache 的新手。

我正在构建一个小型网页 - 通过单击客户端计算机上的按钮,它可以在服务器上运行一些 python 代码。为此,我在网上阅读了几篇文章,这些文章告诉 PHP 是这样做的方法。我还读到我不需要 AJAX。我对 PHP、AJAX 及相关技术的了解处于初级水平。

我的 RHEL 6.5 机器上运行着 Apache 服务器。 我有 PHP v5.3.3,Python v2.6。

PHP 脚本(script.php):

<?php
echo shell_exec("python pytest.py");
?>
  • 位置:/var/www/html/script.php

  • 权限:chmod 777 script.php

Python 脚本 (pytest.py):

import os
os.remove("/<path>/hon.txt")
  • 位置:/var/www/html/pytest.py

  • 权限:chmod 777 pytest.py

索引 HTML (index.html):

<!DOCTYPE html>
<html>

<header>
<title>Python Run</title></header>
<body>

<p>
<b><font size="10" color="red"><div align="center">Run Python Jobs</div></font></b>
</p>

<table style="width:100%">
  <tr>
    <td>Script1</td>
    <td>Description</td>
    <td>
                <form action="script.php" method="get">
                        <input type="submit" value="Run Py Script">
                </form>
    </td>
  </tr>
</table>
</body>
</html>

完成的其他事情/测试:

  • Python 脚本独立运行,它是一个用于删除文件的简单 Python 脚本。
  • PHP 脚本也可以在运行 Apache 服务器的机器上独立运行。
  • 当我尝试从 HTML 中单击按钮时,PHP 脚本似乎不起作用。

  • 我已经检查了来自

    的日志消息
    cd /var/log/
    tail messages -f
    
    May  6 18:22:01 machine abrt: detected unhandled Python exception in 'pytest.py'
    
  • 我不确定这是否是因为权限,所以我做了一个

    chmod 777 -R /var/www 
    

    即使这样我也遇到了同样的问题

  • 我不确定哪里出了问题,所以我对 PHP 脚本 (script.php) 又做了 2 处更改:

    <?php
    echo shell_exec("/usr/bin/python /<path>/pytest.py");
    echo shell_exec("ls");
    ?>
    

    在这里-第二行在浏览器中有效,第一行无效。这意味着我的 python 部分没有被执行。

如果这是一个问题,我在某处读到,因为我的 Apache 服务器没有以 root 权限运行。作为新人 - 我不知道如何检查。

如果需要更多信息 - 我可以在后续编辑中提供详细信息。

【问题讨论】:

  • 可能是因为您的 shell_exec() 的参数没有从根目录执行它吗?试试 echo shell_exec("/usr/bin/python pytest.py");
  • I am very new to PHP - 快跑!逃跑!像你的生命依赖它一样奔跑!
  • @That1Guy:运行到 PHP 还是从 PHP 运行? :)
  • 您使用 PHP 来运行 Python?我想我快要崩溃和哭泣了。 :-( 在 .htaccess 中,您可以告诉 Python 将 .py 文件作为 CGI 脚本执行。然后将 shebang #!/usr/bin/python2.7 (或任何版本)添加到文件顶部。
  • May 6 18:22:01 machine abrt: detected unhandled Python exception in 'pytest.py'你需要调试你的python脚本,处理异常看看是什么错误。

标签: javascript php python html ajax


【解决方案1】:

尝试放置文件的完整路径。在您的情况下,您只需说 'pytest.py',因此将其替换为完整路径。

这样做会导致如下结果:

<?php
    echo shell_exec("/usr/bin/python /home/username/scripts/pytest.py");
?>

(另外,你在usr/bin/python前面漏掉了一个/

【讨论】:

  • 谢谢你 - 我刚刚做了这个更正......我的 python 脚本在 /var/www/html ,我什至尝试了另一个位置,但它不起作用
  • 如果您的脚本在 /var/www/html 中,您是否已经尝试过"/usr/bin/python /var/www/html/pytest.py"?当你尝试这个时,错误信息是什么? (还是还是一样?)
  • 我试过“/usr/bin/python /var/www/html/pytest.py” - 不起作用 - 抱怨说找不到 pytest.py。但是,当我尝试“/usr/bin/python pytest.py”时 - 它可以工作。我正在失去理智:(
  • 你的 cmets 很有帮助 我有一些工作。我已将 python 脚本移至 /var/www/html .. 现在我可以让它工作了。
  • 让它在任何文件夹中的任何 python 脚本上工作会很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2020-08-18
  • 2018-05-25
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多