2015-05-06 252 views
3

我很新的PHP &阿帕奇。无法执行python脚本从php,在客户端

我正在构建一个小型网页 - 可以在客户端计算机上单击按钮,在服务器上运行一些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 Script(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权限运行。新的 - 我不知道如何检查。

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

+1

难道是因为参数传送给了shell_exec()不从根目录执行它?尝试echo shell_exec(“/ usr/bin/python pytest.py”); –

+2

'我对PHP很新颖 - 运行!逃跑!像你的生命一样依赖它运行! – That1Guy

+2

@ That1Guy:运行或从PHP? :) –

回答

3

尝试将完整路径放置到您的文件。在你的情况下,你只是说'pytest.py',所以用完整路径替换它。

这样做,这会导致这样的事情:

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

(另外,你错过了一个/usr/bin/python前)

+0

谢谢你 - 我只是做了这个更正...和我的Python脚本在/ var/www/html中,我甚至尝试了另一个位置,它不起作用 – sudhishkr

+1

如果你的脚本在/ var/www/html中,你已经试过'“/ usr/bin/python /var/www/html/pytest.py”吗?当你尝试这个时,错误信息是什么? (或者它仍然是相同的?) – Exceen

+0

我试过“/ usr/bin/python /var/www/html/pytest.py” - 不起作用 - 抱怨说pytest.py无法找到。但是,当我尝试“/ usr/bin/python pytest.py” - 它的工作原理。我正在失去我的头:( – sudhishkr