1. 程式人生 > >Centos7+nginx上部署laravel(同時解決laravel訪問新建路由出現404的問題、No input file specified的問題、URL模式問題)

Centos7+nginx上部署laravel(同時解決laravel訪問新建路由出現404的問題、No input file specified的問題、URL模式問題)

laravel訪問新建路由出現404問題、No input file specified問題這兩個問題可能是因為用了一鍵lnmp,不知道實際nginx配置造成的,百度問題也很難解決,部署過程中也碰到了不少莫名其妙等問題。

-

#1. 一般直接在nginx.conf裡面新增如下即可完成URL的路由訪問

[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf

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

但是,我用的是一鍵lnmp 

https://blog.csdn.net/weixin_41827162/article/details/82914526,裡面的nginx添加了如上程式碼,新建路由訪問時依然404。

最終在nginx.conf裡面找到一句include enable-php.conf,裡面有一句 try_files $uri =404; 是這句每次訪問新路由時都是404。

[[email protected] conf]# vi enable-php.conf

註釋掉try_files $uri =404;就行了就可以了。
[[email protected] conf]# service nginx restart

        location ~ [^/]\.php(/|$)
        {
            #try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
        }

-

#2. 404問題總結:

1)找到try_files $uri =404; 然後將它註釋掉。地方可能在nginx.conf、enable-php.conf等檔案。

2)新增下面程式碼:

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

 3)重啟nginx即可:service nginx restart

-

#3. 接下來解決No input file specified  問題:

這個問題等出現是因為 主機未開啟 pathinfo 函式導致的。需要啟用 cgi.fix_pathinfo 引數

參考:https://blog.csdn.net/a787031584/article/details/53400250

1)進入php.ini檔案。將cgi.fix_pathinfo的值改成1

[[email protected] ~]# find / -name php.ini
/usr/local/php/etc/php.ini
[[email protected] ~]# vi /usr/local/php/etc/php.ini

2)然後到配置域名解析的檔案下(一般是以域名命名的配置檔案)。加上這三句:

比如我加在nginx.conf下:

astcgi_split_path_info ^(.+\.php)(/.+)$;  
fastcgi_param   PATH_INFO   $fastcgi_path_info;  
fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name; 

-

4. 最終laravel部署完畢,新建路由訪問成功:

ThinkPHP5也成功(感嘆一下,TP真的比laravel好部署萬倍,各種省心):

-

-------拓展--------------

pathinfo URL寫法:

  • laravel:/index.php/引數
  • TP5:/?s=/引數   或者  /index.php?s=/引數

TP5等URL模式比較方便,可以適用於pathinfo和相容模式;laravel以上配置的是pathinfo模式,而且官方推薦等也是pathinfo

模式。

-