2013-07-15 193 views
0

我有一個python文件,我想在執行php頁面時執行。 python文件與php文件位於同一個文件夾中。執行的python腳本編輯php文件訪問的文本文件。從PHP執行python文件 - Linux

我有以下代碼:

<?php 
exec("python somefile.py",$output); 
$file = fopen("test.txt",'r'); 
.... 

出於某種原因,python腳本永遠不會被執行。我知道這一點,因爲我可以從文本文件中的變化中看到它。 由於我不確定腳本是否可執行,因此我在命令中包含了「python」。 我也跑了:

chmod +x somefile.py 

只是爲了確保這不是原因。但是這也沒有幫助。 我應該改變什麼以使php頁面在被調用時執行python腳本?

+2

你能夠運行exec()嗎?很多時候,你會發現它在PHP的禁用功能。 – Pitchinnate

+0

你試過'/ usr/bin/python ...'嗎? '$ PATH'可能無法在Web服務器環境中使用 – hek2mgl

+0

我不確定是否屬於這種情況。正如我在加載php頁面時看到的沒有錯誤。有沒有辦法啓用exec()函數?或者有沒有辦法解決它? –

回答

1

這很可能是一個權限問題。

嘗試

echo exec("whoami"); 

這將讓你知道誰PHP是運行的。然後你需要驗證這個用戶可以運行python腳本。如果該文件不是由運行python的相同守護程序創建的,則很可能會被拒絕。

更新

這將讓你知道誰擁有所有你正在使用的文件。被寫入的文件需要由運行python的用戶寫入。如果你從ssh運行python,那麼這個用戶很可能與你從exec運行python的用戶不一樣。

echo exec('whoami') . "<br>"; 
echo exec("ls -l test.txt") . "<br>"; 
echo exec("ls -l somefile.py") . "<br>"; 

更新2

因爲我經常忘記這一點的存在。

passthru('python somefile.py 1 2>&1'); 

這將執行您的python文件,並將stderr輸出到標準輸出。

+0

它說apache。 –

+0

apache用戶可以運行python腳本嗎?並且apache用戶可以寫入文件嗎? –

+0

我不太確定。我是linux和php的新手。這可能是非常天真的,但Apache不是服務器?這是否有像用戶帳戶? 請點擊此處。 –