2015-08-28 83 views
0

編輯:nginx的服務404頁

$ sudo find /var/public/www -type d -exec chmod 755 {} + 

$ sudo find /var/public/www -type f -exec chmod 644 {} + 

但是當我列出內部WWW文件的權限仍然看上去是錯誤的:基於@Devons的意見,我沒有任何錯誤(found in this post)運行以下命令。我究竟做錯了什麼?謝謝!

drwxrwx--- 1 root vboxsf 4096 Aug 28 12:45 app 
-rwxrwx--- 1 root vboxsf 1646 Aug 28 12:45 artisan 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 bootstrap 
-rwxrwx--- 1 root vboxsf 1201 Aug 28 12:45 composer.json 
-rwxrwx--- 1 root vboxsf 105046 Aug 28 12:55 composer.lock 
drwxrwx--- 1 root vboxsf 4096 Aug 28 12:45 config 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 database 
-rwxrwx--- 1 root vboxsf 503 Aug 28 12:45 gulpfile.js 
-rwxrwx--- 1 root vboxsf 159 Aug 28 12:45 package.json 
-rwxrwx--- 1 root vboxsf  87 Aug 28 12:45 phpspec.yml 
-rwxrwx--- 1 root vboxsf 899 Aug 28 12:45 phpunit.xml 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 public 
-rwxrwx--- 1 root vboxsf 1928 Aug 28 12:45 readme.md 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 resources 
-rwxrwx--- 1 root vboxsf 567 Aug 28 12:45 server.php 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 storage 
drwxrwx--- 1 root vboxsf  0 Aug 28 12:45 tests 
drwxrwx--- 1 root vboxsf 4096 Aug 28 12:56 vendor 

這是我第一次用的nginx並不能得到laravel歡迎頁面顯示。我使用Ubuntu 14.04和垂直框5.

我在/var/nginx/sites-enabled/default配置爲

server { 
    listen 80 default_server; 
    charset utf-8; 
    server_name doimain.app www.domain.app; 

    root /var/www/public; 
    index index.php index.html; 

    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~ \.php$ { 
     try_files $uri /index.php =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

我的服務器裏面/var/www/public我可以列出laravel公共文件夾的文件

$ ls -l /var/www/public 
total 3 
-rwxrwx--- 1 root vboxsf 0 Aug 28 12:45 favicon.ico 
-rwxrwx--- 1 root vboxsf 1786 Aug 28 12:45 index.php 
-rwxrwx--- 1 root vboxsf 24 Aug 28 12:45 robots.txt 

,但我得到404,當我去domain.app。 nginx的錯誤日誌顯示:

2015/08/28 14:29:35 [crit] 1487#0: *14 stat() "/var/www/public/index.php" failed (13: Permission denied), client: 10.0.0.18, server: domain.app, request: "GET/HTTP/1.1", host: "domain.app" 

我都沒有成功嘗試了以下內容:

確保WWW的數據擁有該文件夾結構/var/www

$ sudo chown www-data:www-data /var/www 

更改訪問權限/var/www

$ sudo chmod -R 0755 /var/www 

謝謝!

回答

0

公共目錄由root擁有,不能被其他人讀取。您或者需要將所有權更改爲www-data或chmod 全部的文件夾和文件。對於大多數配置,文件夾應該是0755和文件是0644。如果文件由運行nginx和php的同一用戶擁有(我假設爲www-data),則可以保留它。

更改/ var/www的所有權本身不會做任何事情,您必須更改Web目錄中的所有文件夾和文件。

您可以使用-R標誌以遞歸方式chmod和chown。

chown -R www-data:www-data /var/www/public 
+0

值得一提的是WWW的數據應,一般來說,沒有自己的網站目錄威力,這樣做你打開自己,你允許www數據(阿帕奇)寫任何的代碼漏洞文件,在需要的時候允許使用chmod的權限,不要允許一切!看到這個AskUbuntu的答案:http://askubuntu.com/questions/20105/why-shouldnt-var-www-have-chmod-777 – williamvicary

+0

@williamvicary,我不知道這是多麼相關,因爲你需要一臺服務器執行寫入。僅靠阿帕奇就無能爲力。擁有目錄的相同用戶擁有PHP進程是非常正常的。 – Devon

0

由addig www-data用戶vboxsf組和重新啓動服務器解決它。

$sudo usermod -G vboxsf -a www-data