2012-08-08 47 views
2

我(PHP新手)在我的Linux/Apache服務器上建立了一個遺留的PHP網站。如果我的PHP腳本在那裏寫入,那麼/ var/tmp/mysite上的權限應該是什麼?

當我測試瀏覽器中的網站,我得到這個錯誤:

Warning: move_uploaded_file(/var/tmp/jinfo/Circuit/best_cities.csv): 
failed to open stream: Permission denied in /var/www/jinfo/includes/jinfo.inc.php on line 89 
Warning: move_uploaded_file(): Unable to move '/tmp/phpMLE9Ox' to 
'/var/tmp/jinfo/Circuit/best_cities.csv' in 
/var/www/jinfo/includes/jinfo.inc.php on line 89 

看起來像一個文件系統權限問題。該腳本使用/var/tmp/jinfo及其子文件夾來存儲文件。該目錄上的權限爲:

drwxr-xr-x 5 root root 4096 Aug 7 15:32 jinfo 

由於Apache以用戶www-data身份運行,因此預計會出現錯誤消息。但是權限應該是什麼?我確信有很多方法可以通過放寬權限來使錯誤信息消失,但我想遵循最佳做法。我應該將所有者(chown)更改爲www-data,還是chmod權限?

注意:我需要更改傳播到子目錄。

+0

文件'/ tmp/phpMLE9Ox'的用戶/組是什麼? – 2012-08-08 03:09:31

+0

不知道,因爲這些文件似乎很快被刪除,我什至不能看到他們的權限。 – RexE 2012-08-08 03:14:28

回答

1

您需要修改您的權限,然後更改組才能生效。正如爆炸丸的回答中所提到的,您應該將該組更改爲Apache的www-data。您可以在/var/www目錄遞歸地做到這一點:

chown -R owner:www-data /var/www 

其中owner是當前擁有文件的用戶。

在這裏你可以看到讀/寫/對所有者,組文件的執行權限,其他分別爲:

drwxr-xr-x

忽略d,其他字母的意思是:

  • 所有者 - 讀寫執行
  • 組 - 讀取------執行
  • 其他 - 讀取------執行

這個網站給你chmod數字的含義:

http://www.goldenplanet.com/support/kb/articles/changing-of-file-rights-chmod-on-the-webserver.html

 
0: No rights 
1: Execute 
2: Write 
3: Write/Execute 
4: Read 
5: Read/Execute 
6: Read/Write 
7: Read/Write/Execute

您可以對已授權系統錯誤這將給的所有者的目錄做chmod 775文件和組的完整權限,同時只給「其他人」,讀取並執行訪問。

+0

'chmod g + w'將是首選 – 2012-08-08 03:30:10

+0

我澄清說,這部分也是@RexE確保您將用戶添加到「www-data」組中,否則可能會被迫編輯文件作爲根。 – 2012-08-08 03:34:58

1

我認爲最好的解決方案是將該文件夾分組到www-data組並添加分組寫入權限(或者在其中創建一個包含www數據的新組)。

0

我認爲更好的選擇是chown或chgroup然後chmod,以便爲用戶/組提供寫入文件的權限。

chgrp -R www-data /var/tmp/jinfo 

     OR 

CHOWN -R根:WWW的數據/ var/tmp中/金佛山

它們都將產生相同的output.Then改變權限,通過賦予權限的組寫訪問的夾。

chmod 775 or chmod 665 or chmod g+w /var/tm/jinfo -R 

給予對該組的寫入訪問權限。

相關問題