🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> lnmp1.5集成环境下部署thinkphp5.0框架的项目,无法正常访问,访问报404页面等。 ![](https://box.kancloud.cn/f158d4e4bc8ee400d101bdebad68baac_671x244.png) 首先tp5的访问目录指向到webroot/public文件夹中。thinkphp的url访问:http:// serverName/ index.php(或者其它应用入口文件)/模块/控制器/操作/\[参数名/参数值...\],这个需要支持pathinfo,Apache默认支持,而Nginx不支持。 ### **修改站点配置文件** > 使用 lnmp1.5一键安装包 添加虚拟机主机会自动生成配置文件 > lnmp1.5的站点配置文件一般在 /usr/local/ngnix/conf/vhost/站点.conf 将项目路径指向public目录,设置PATH_INFO,去掉入口文件,如下 ``` server { listen 80; #listen [::]:80; server_name www.thbuyshop.com thbuyshop.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/www.thbuyshop.com/public; include rewrite/other.conf; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php-pathinfo.conf; #======================================= # 添加内容部分 #定义变量 set $root /home/wwwroot/www.thbuyshop.com/public; location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; #设置PATH_INFO fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name; #引入fastcgi配置 include fastcgi.conf; } #从URL中去掉index.php入口文件 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } } #添加内容结束 #=================================== location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /home/wwwlogs/www.thbuyshop.com.log; } ``` ### **修改 fastcgi.conf 中的配置文件** ``` # 进入 fastcgi.conf 文件目录 cd /usr/local/nginx/conf # 修改 fastcgi.conf 配置文件 vim fastcgi.conf # 开放目录访问权限(因为根目录设置到public下导致框架访问上级目录权限不够) fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/:/tmp/:/proc/"; ``` ### **修改 php.ini 中的配置文件** 如果以上设置仍未生效,再进行此操作。 ``` # 进入 php.ini 文件目录 cd /usr/local/php/etc # 修改 php.ini 配置文件 vim php.ini # 修改内容 cgi.fix_pathinfo = 1 ``` ***** 至此,thinkphp5项目路径访问已经正常,如果网页出现 failed to open stream: No such file or directory in的问题,则可能是项目权限不足。 进入站点根目录 -> 执行:chown -R www:www * 即可。