Linux下搭建nginx+php環(huán)境的file not found問題反省

先總結(jié)下這個問題出現(xiàn)的提示

  1. 訪問php頁面顯示file not found
  2. 查看error.log日志文件提示"Primary script unknown" while reading response header from upstream"

描述下我操作的環(huán)境背景..

  1. 初學(xué)Linux,嘗試搭建LNMP環(huán)境
  2. 直接用root用戶操作(因為都是學(xué)習,我也就懶得創(chuàng)用戶了,但這也是導(dǎo)致我這次問題特別的原因)
  3. 因為是root用戶,我直接把nginx的安裝目錄<b>裝在了root目錄下</b>

百度的情況:

  • nginx配置文件中配置的php文件指向的目錄不對,導(dǎo)致找不到文件
    這種情況應(yīng)該這么做,注意代碼中的{{{web目錄}}}改成你對應(yīng)的web目錄

      location ~ .*\.php$ {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME {{{web目錄}}}$fastcgi_script_name;
          include        fastcgi.conf;
      }
    
  • 訪問web目錄的權(quán)限不夠
    那這個你就相應(yīng)的提高需要的權(quán)限吧,-rwxrwxrwx,第一個-是文件類型,然后前三個rwx是所屬用戶的權(quán)限,中間三個是所屬用戶組的權(quán)限,后三個是其他用戶組的權(quán)限

我的情況:

默認php-fpm的配置文件在你的php安裝目錄下 路徑為xxx/etc/php-fpm.d/www.conf,vim打開可以看到里面有

user = nobody
group = nobody

這個設(shè)置,這就是說php-fpm是以nobody用戶啟動的,查看命令為ps -ef | grep php-fpm;
再看看nginx進程的用戶,是root(我只有root用戶)
再看了這篇文章后http://blog.csdn.net/qq_27754983/article/details/68195727 受了啟發(fā),但是我是root用戶,所以這里

user = nobody
 group = nobody

就都改成了

user = root
 group = root

然后啟動出錯,提示說請吧user group改為root以外的用戶,然后我糾結(jié)了一段時間,又去百度了,結(jié)果還真有一定改成root用戶開啟的方法,就是不推薦

在php安裝目錄下/sbin/下執(zhí)行./php-fpm -R,注意大寫R(這是強行以root用戶開啟進程)

然后再查看ps -ef | grep php-fpmps -ef | grep nginx,兩個的用戶是一樣的,訪問成功了。

總結(jié)

一開始我就覺得我這個一定是路徑問題,然后就一直改root指向的目錄,又是剛學(xué)linux,什么移動啊復(fù)制啊改名啊,頭很大.
后來想起來去看eroor.log,去百度里面的關(guān)鍵字,結(jié)果大部分說是權(quán)限問題
我就把整個nginx目錄和所有網(wǎng)頁文件設(shè)為了777權(quán)限。還是不行。

直到找到了這篇文章http://blog.csdn.net/qq_27754983/article/details/68195727 我才去試著改了php-fpm的用戶,最后是成功了。這就說明了的確是權(quán)限問題。
但直到我剛剛再去檢查一遍權(quán)限的時候。/root/這個文件夾的權(quán)限是550,就是說其他用戶組是根本進不來的。搜嘎。終于通了。
這一個下午過去了,但是感覺更了解了linux,nginx,php-fpm

附上今天研究的一點點點nginx配置的說明

多余的配置我刪了,反正我也不懂 , 這些我已經(jīng)夠搭起最基礎(chǔ)的php了,
馬上就要去召喚師峽谷了,寫注釋的時候發(fā)現(xiàn)還有很多不確定的,就大致看看吧~

user root root;#表示用什么用戶運行--大概吧
worker_processes  1;#work的進程數(shù)
events {
    worker_connections  1024;#一個進程最大連接數(shù)
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;#訪問超時限制
    root    html;#吧本來在localtion里面的root參數(shù)提取出來,就在所有的location下用$document_root生效
    index index.html index.php;#同理
    server {
        listen       80;#監(jiān)聽的端口
        server_name  localhost;#主機名
        location / {
            root html;
            index index.php index.html;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#本來是沒有的,估計不用加,可以刪了,因為php下面配置了
        }
        location ~ /file/.* {#自己試試的一個路徑,吧 /file/xxx.xxx的訪問路徑定義到別的地方
            root /root/www/;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ .*\.php$ {
            fastcgi_pass   127.0.0.1:9000;#這個是php-fpm監(jiān)聽的端口,固定的,除非你去改php-fpm的配置文件
            fastcgi_index  index.php;#應(yīng)該是默認主頁吧
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;#這里的$document_root指代最外層的root    html;
            include        fastcgi.conf;#引用外部文件
        }
    }
}#話說當前目錄這里不用加./的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容