本文以Ubuntu爲例,其他的Linux系統類似。
環境爲Apache + PHP搭建的web服務器
假設網站根目錄爲/var/www/html
問題:
直接通過shell執行PHP,在網站目錄下面讀寫文件沒有問題,但是通過瀏覽器訪問php,卻不能寫文件。
原因:
Apache是通過用戶www-data來執行PHP的,所以PHP能夠做什麼,取決於用戶www-data能做什麼?一般情況下,www-data用戶並沒有在www/html下面寫文件的權限,所以PHP在通過瀏覽器訪問的時候是沒有辦法寫入文件的。
解決辦法:
可以簡單的把www/html或者www/html下面的某個子目錄比如/var/www/html/download的所有者設置爲www-data,這樣PHP就可以正常寫文件。
命令:sudo chown -R www-data /var/www/html