ThinkPHP项目在PHPStudy的Nginx下部署

作者:技术拾光

时间:2026-05-29

浏览:537

ThinkPHP部署中,宝塔面板防跨站攻击开关开启会导致404,关闭即可。本地PHPStudy用Nginx时,路径转义(如\t)报错Noinputfilespecified,需修改vhosts.conf避免转义。同时添加URL重写规则隐藏index.php。

朋友的一个ThinkPHP项目需要部署,用Linux服务器,搭宝塔面板。第一台服务器装好宝塔,配上Nginx和PHP 5.6,建站、绑定域名,一气呵成,一切正常。

ThinkPHP项目在PHPStudy的Nginx下部署

但昨天在另一台服务器上重复同样的操作——宝塔、Nginx、PHP 5.6、建站、绑定域名——访问时却直接给了个404。一顿搜索后发现,问题出在宝塔网站设置里那个“防跨站攻击”的开关。第一台服务器默认没勾,这台却勾上了,去掉勾选后立即恢复正常。

接着把项目放到本地Windows 10上,装好PHPStudy,先用默认的PHP 5.6 + Apache,在站点域名管理里新建一个,端口设为8001。浏览器访问 http://localhost:8001,正常显示。

然后换成Nginx + PHP 5.6,同样新建站点、端口8001,结果无论访问哪个页面都报错:No input file specified。

网上搜了一整天,终于找到一篇能解决问题的文章。查看 C:\phpStudy\PHPTutorial\nginx\logs\error.log,发现错误信息指向路径转义问题。项目目录是 c:\temp\daochi\php,原来Nginx把 \t 给转义了。进入 C:\phpStudy\PHPTutorial\nginx\conf\vhosts.conf,把路径改成 c:\emp 就好了。

重新访问 http://localhost:8001,能显示了,但又冒出另一个问题:ThinkPHP项目在本地测试需要手动加上 index.php。如果想去掉这个尾巴,还得继续改 vhost.conf,加上ThinkPHP的路由重写规则。差点忘了,宝塔面板上也要在网站配置文件里加上同样的内容:

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

至此,本地和服务器上的部署都跑通了。核心就是两件事:宝塔里检查防跨站开关,Nginx反赌意路径转义和ThinkPHP的URL重写配置。如果你也遇到类似问题,不妨顺着这个思路排查一遍。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章