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
最終在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
模式。
-