我是 PHP 和 Apache 的新手。
我正在构建一个小网页 - 它可以在客户端计算机上单击一个按钮后在服务器上运行一些 python 代码。为此,我在网上阅读了几篇文章,它们告诉 PHP 是实现它的方法。我还读到我不需要 AJAX。我对 PHP、AJAX 和相关技术的理解处于初级水平。
我有一个 Apache 服务器在我的 RHEL 6.5 机器上运行。 我有 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 权限运行。作为新手 - 我不知道如何检查。
如果需要任何更多信息 - 我可以在后续编辑中提供详细信息。
最佳答案
尝试放置文件的完整路径。在您的情况下,您只需说 'pytest.py'
,因此请将其替换为完整路径。
这样做,结果会是这样的:
<?php
echo shell_exec("/usr/bin/python /home/username/scripts/pytest.py");
?>
(还有,你在usr/bin/python
前面少了一个/
)
关于javascript - 无法在客户端从 php 执行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30086874/