2011-07-11 85 views
0

這是我的python腳本,它在執行時會創建一個「test.txt」文件。當我執行使用終端(Ubuntu 11.04)[email protected]:/var/www/HMS# python test.py。它會按照我的預期在/var/www/HMS目錄中創建「test.txt」。從PHP調用Python腳本的問題

 
test.py: 

#!/usr/bin/env python 

def init(): 
    filename = "test.txt" 
    file = open(filename, 'w') 
    file.write("This is the new content of test.txt :-)") 
    file.close() 
    print "done" 

def main(): 
    init() 

if __name__ == '__main__': 
    main() 

但是,當我嘗試使用PHP調用此test.py時,它不會創建'test.txt'輸出文件。

 
index.php: 

$tmp = exec("python test.py"); 
echo "temp: $tmp"; 

兩個test.py & index.php是在相同的目錄(/var/www/HMS/)。但是,當我修改test.py這樣的:

 
#!/usr/bin/env python 

def init(): 
    print "done" 

def main(): 
    init() 

if __name__ == '__main__': 
    main() 

它打印在瀏覽器中,這是我所期待的temp: done

我不知道爲什麼我以前的Python代碼沒有按預期工作。

回答

1

當您在命令行上測試python腳本時,您的運行方式爲root。有可能你沒有運行網絡服務器root(這是一件好事),並且網絡服務器的用戶沒有適當的權限來創建和/或寫入該文件。

+0

非常感謝您的回答Mat..Now我修正了這個問題。不過,在執行'nltk.WordNetLemmatizer()'函數時,我遇到了類似的問題。這次的權限不是問題,因爲我在你的建議後檢查過。如果你熟悉'NLTK library',他可以幫我[this](http://stackoverflow.com/q/6646310/585329) – Maggie

+0

你是如何設置網絡服務器權限的? – slash89mf