thinkphp在nginx的pathinfo设置不同时差异

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'], '/'));
}

你可能感兴趣的:(thinkphp在nginx的pathinfo设置不同时差异)