thinkphp在Nginx没有pathinfo的情况出现".php"的文件,这个让人很是纠结。在服务器是Linux,web服务器是nginx, CGI接口是FASTCGI,就会出现这个问题。
简单来说,当cgi.fix_pathinfo=0时,PHP_FILE获取的值是.php,导致U函数生成URL不正确,改为1后,PHP_FILE获取的值是index.php。
但是cgi.fix_pathinfo=1时会有安全隐患,目前暂时先把代码改成如下了:
if (IS_CGI) {
//CGI/FASTCGI模式下
//$_temp = explode('.php',$_SERVER['PHP_SELF']);
//define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',
//$_temp[0].'.php'),'/'));
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'], '/'));
} else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'], '/'));
}
网友评论