2011-10-27 41 views
3

我從一個PHP文件啓動的文件夾「摺疊」中有一個簡單的Python腳本。它會在同一個目錄下創建一個文件,然後退出到PHP。允許python腳本創建文件的最佳/最簡單的Apache服務器/文件夾設置是什麼?

f = open("t.txt","w") 
f.write("test") 
f.close() 

您可以從PHP與調用它:

$proc=proc_open("fold/simple.py",array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w')),$pipes); 

execute("python fold/simple.py"); 

等。

,似乎合乎邏輯的我的設置爲:

  • 我在文件夾和python文件的所有者之間添加了apache組。
  • 我允許通過該文件夾寫入組。
  • 我設置了蟒蛇文件,所有人都可以執行。

這似乎是正常的嗎?但是,PHP報告的錯誤是沒有寫權限。我也用PHP測試了用戶:

echo 'current user :'.exec('whoami'); 

它是「apache」,它顯然屬於同音詞組。

所以,我在哪裏出問題了,什麼設置滿足是最好的和最簡單的之間的平衡?謝謝!

+0

那麼答案顯然是剛剛運行'chmod 777'的有問題的目錄 - 但我認爲它有一些原因,你不想這樣做?此外,生成「無寫入權限」錯誤的代碼是什麼?你究竟在什麼(以及在哪裏)得出這個結論呢? – DaveRandom

+0

當然,chmod 777是最簡單的解決方案,但是出於安全考慮可能是最糟糕的。爲了得到這個錯誤,我把標準錯誤流傳送給了php,它的確切文本我不記得了,但是當通過文件夾禁用寫入權限時,這是通常的python錯誤。 – grokkaine

+0

我真的很驚訝沒有在互聯網上找到一個好的配方,我期望所有的python web開發教程都以此開始! – grokkaine

回答

0

從我的經驗,我建議你創建一個目錄是隻爲你的程序創建的文件,也許文件什麼的,並設置權限爲777(搭配chmod -R 777個文件)和其他目錄應該是755,出於安全原因。

0

至於說被大家,一般來說這不是很好的設置目錄777米的權利!如果你明白你的腳本在哪裏工作,這是沒有必要的!

但是,要解答您的問題,解決方案應該將apache:apache的權限更改爲您要寫入的文件夾,並且,除此之外,不要依賴於您想要的文件的相對路徑運行/讀/寫,但始終指定一個絕對路徑:Python中你可以這樣做在前面加上你想要的東西,如寫文件名...

from os.path import dirname, abspath 
basedir = dirname(abspath(__file__)) + '/' 
相關問題