server php self_Nginx+PHP环境下$_SERVER['PHP_SELF']为空

题记

出现此问题是由于老系统使用 TP3.2,本地的开发环境由原先的windows迁移到虚拟机Linux中,然后发现 U 方法后生成的路由会变成相对路由地址,导致重定向的时候会多出一个Controller的名称,这样子加载时候就会路由404。

Example:

正常:/Index/index.html

实际:./Index/index.html

/Index/Index/index.html

解决

通过和正常的环境比较,反推到自己本地获取到$_SERVER[‘PHP_SELF’] 为空,实际应该是有值为 index.php

if(!IS_CLI) {

// 当前文件名

if(!defined('_PHP_FILE_')) {

if(IS_CGI) {

//CGI/FASTCGI模式下

$_temp = explode('.php',$_SERVER['PHP_SELF']);

if (isset($_SERVER['HTTP_HOST'])) {

define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));

} else {

define('_PHP_FILE_', rtrim($_temp[0].'.php','/'));

}

}else {

define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));

}

}

if(!defined('__ROOT__')) {

$_root = rtrim(dirname(_PHP_FILE_),'/');

define('__ROOT__', (($_root=='/' || $_root=='\\')?'':$_root));

}

}

上面是ThinkPHP.php操作处理的地方。

找到了问题的节点,那么处理起来就比较容易了。查询一下关于 $_SERVER[‘PHP_SELF’] 的为空的问题就能解决。

vi /usr/local/php7.1/etc/php.ini

修改 cgi_fixpathinfo 改为1,原来我虚拟机里面为0,之后重启 php即可。

/etc/init.d/php-fpm7.1 restart

END

框架过老,且行且珍惜~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值