2015-05-06 276 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