前言
在服务器上运行thinkphp时,会出现模块不存在:index或者模块不存在:index.php的问题
服务器环境:
系统:CentOS 7 x64
nginx:1.12.2
thinkphp版本:5.1
修改nginx配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| location / { index index.php index.html;
if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } }
location ~ .+\.php($|/) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf;
set $fastcgi_script_name2 $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") { set $fastcgi_script_name2 $1; set $path_info $2; } fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2; fastcgi_param SCRIPT_NAME $fastcgi_script_name2; }
|
重启nginx,就可以了。
由于这样可能会导致cgi.fix_pathinfo漏洞
,详细可以看这篇文章Nginx + PHP CGI的一个可能的安全漏洞。
所以需要需改php.ini
文件。
1 2 3 4 5 6 7 8 9
| # 查找php.ini文件 sudo find / -name 'php.ini' # 打印出/etc/php.ini # 编辑php.ini sudo vi /etc/php.ini # 查找 # cgi.fix_pathinfo=1 # 将其改为 # cgi.fix_pathinfo=0 # 后保存
|