【thinkphp 5 在nginx 環境下路由沒法生效(404 500錯誤 )的解決方法】

 

很是慚愧的說,因爲以前一直使用的是windowservice,安裝apache來進行服務器佈置的,這種方式也是最簡單最直接的方式,php

可是因爲php的服務大多都是linux棧的,我們也不能落後呀,在寫了php半年以後,開始擁有的本身的第一臺centos的服務器,mysql

 

實話說,centos真的是簡潔,部署完成 php ,mysql,nginx,ftp以後只是使用的1g的空間,服務器開啓的時候cpu佔用率還不到3%【1核1G20g最低配服務器】linux

 

本來是想先把這個服務器當作api服務器來使用,因而選用的了(傳說中適合api 的 thinkphp 框架)nginx

 

一塊兒準備就緒,選擇最新的穩定版tp5,下載,配置域名,文件入口,隱藏路徑……sql

 

寫完第一個controller 發現,臥槽,thinkphp

 

404了?apache

 

仔細閱讀文檔,沒毛病呀windows

tp5已經默認url_model是兼容模式了呀,爲何仍是訪問不到呢?centos

 

萬能的百度讓我發現不少人都是這種問題,可是 不少都是tp5之前的版本,配置文件寫起來不一致,錯誤了n次api

因而本身找文件,仔細閱讀:

 

 

參考文獻:http://www.9958.pw/post/nginx_config

 

重點

 

我發現:

因爲nginx不支持pathinfo致使在thinkphp使用

訪問的時候會出現404錯誤,

這個時候你要看看本身的nginx的config文件

location ~ \.php${
	fastcgi_psaa 127.0.0.1:10000;
	include fastcgi.conf
}

這是個人config文件

配置也是極其簡單,這個時候咱們要逐步的改這個配置文件

 

 先貼最終的 文件【注意:不要直接複製粘貼】

location ~ \.php/?.* {
	fastcgi_pass   127.0.0.1:10000;
        fastcgi_index index.php;
        set $path_info ὀ~\ὀ~];
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ ὀ~\^(.+?\.php)(/.+)$ὀ~]) {
        set $real_script_name $1;
        set $path_info $2;
        }
        fastcgi_param SCRIPT_FILENAME /www_amiku_cn$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        include fastcgi.conf;
}
  

  

 首先

location ~ \.php${

  改成

location ~ \.php/?.* {

這樣,用url在訪問您的網站的時候就可以識別全部的網址

接下來

fastcgi_psaa 127.0.0.1:10000;

 這一句要你們根據本身的端口號來填寫,不須要改,切記不要隨意複製粘貼

接着在你原有的配置中刪除其餘項

替換成pathinfo及地址匹配方法

        set $path_info ὀ~\ὀ~];
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ ὀ~\^(.+?\.php)(/.+)$ὀ~]) {
        set $real_script_name $1;
        set $path_info $2;
        }
        fastcgi_param SCRIPT_FILENAME /www_amiku_cn$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;    

 最後,

把本來的include的方法補上【注意】

【注意】在include的的時候注意要確認本身的文件名稱

我這裏的是

fastcgi.conf

有些人的是

fcgi.conf

是不同的,注意不要填錯

接着:wq保存修改

 

reload 一次便可

 

這樣thinkphp在nginx環境下就能正常訪問及debug了

 

最後附上nginx去掉index.php的方法

同理,加載nginx.conf的location後面便可

if (!-e $request_filename) {
    rewrite  ^(.*)$  /index.php?s=/$1  last;
    break;
}

 

 

最後:感謝大神的參考資料:http://www.9958.pw/post/nginx_config

相關文章
相關標籤/搜索