2013-06-20 36 views
0

我有一個通過SSH連接到遠程設備並對其進行配置的Python(2.7)腳本。 這個腳本在我運行時工作正常。Python SSH腳本在PHP執行時不起作用

我有一個執行其他Python腳本的PHP頁面,它們也工作正常。 問題:當我從PHP頁面運行它時,SSH腳本不起作用。 (沒有與PHP頁面也不是Python腳本沒問題)

更具體地講,腳本(當PHP執行)運行,直到它到達第一個SSH相關的代碼(import paramiko)。

這怎麼可能,我能做些什麼來使它工作? 謝謝!

(OS:Windows XP服務器:WAMP(阿帕奇HTTP服務器)

例如,考慮這個簡單的代碼:

fp=open("file.txt","w") 
fp.write("text") 
import paramiko 
fp.write("another text") 
fp.close() 

如果由我執行,一切工作正常。如果由PHP。直到 「進口的paramiko」 執行頁面 - 只有代碼

或:

fp=open("file.txt","w") 
fp.close() 
import paramiko 
fp2=open("file2.txt","w") 
fp2.close() 

由我執行 - 創建了兩個文件。由php-只有第一個。

此外:我嘗試使用嘗試&趕上,但沒有出現。沒有例外被拋出。

+2

發表一些代碼! –

+0

看到python腳本的paramiko部分會特別有用。也許你正在使用基於密鑰的身份驗證,並且密鑰不能被PHP進程訪問? –

+0

請學會不要重寫builtins。雖然這是可能的,而且語言非常靈活,但您在開始使用Python的旅程時不應該這樣做。 – Tadeck

回答

2

我的猜測是paramiko不在您的Apache用戶的PYTHONPATH環境變量中。

當Apache會調用PHP,作爲無論「阿帕奇」用戶恰好是它在調用PHP(在Linux中通常apache(或httpd)用戶在組www-data)。有時這個用戶會設置不同於用戶通常具有的環境變量。雖然這通常並不重要,但有時它會引起奇怪的相互作用(我可以看到它與Pip一起發生)。

我想補充一個嘗試......唯獨身邊的paramiko:

try: 
    import paramiko 
except Exception as e: 
    # log your exception here. 
    pass # I put this here so the example can compile. 
#rest of the script 

這應該讓你知道它是否被安裝(我懷疑它是不是)。

+0

沒有拋出異常.. – user2162550

+0

@ user2162550可能會有超時嗎? – cwallenpoole

+0

我不知道。爲什麼超時? – user2162550