日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php_self nginx,nginx中的PATH_INFO为什么会影响$_SERVIER['PHP_SELF']

發布時間:2023/12/10 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php_self nginx,nginx中的PATH_INFO为什么会影响$_SERVIER['PHP_SELF'] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發現問題:

使用ThinkPHP3.2.2在nginx部署網站,設置URL_MODEL=2,使用U方法在本地生成的鏈接形如:/public/index

但是在部署在nginx上卻出現了問題 其中的URL生成了./public/index

通過追尋ThinkPHP源碼在ThinkPHP.php文件中發現了如下代碼:

if(IS_CGI) {

//CGI/FASTCGI模式下

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

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

}else {

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

}

這是問題的根源

訪問:http:www.xxx.com/public/index

在apache下$_SERVER['PHP_SELF']顯示./index.php/public/index

而在nginx中顯示空白

訪問:http:www.xxx.com/index.php/public/index

在apache下$_SERVER['PHP_SELF']顯示./index.php/public/index

而在nginx中顯示/public/index

最后發現是在nginx開啟PATH_INFO時出現了奇異。

我的nginx 中PATH_INFO段的配置是:

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

set $path_info $fastcgi_path_info;

fastcgi_param PATH_INFO $path_info; #只要設置了這行PHP_SELF返回的就出問題

try_files $fastcgi_script_name =404;

回復內容:

發現問題:

使用ThinkPHP3.2.2在nginx部署網站,設置URL_MODEL=2,使用U方法在本地生成的鏈接形如:/public/index

但是在部署在nginx上卻出現了問題 其中的URL生成了./public/index

通過追尋ThinkPHP源碼在ThinkPHP.php文件中發現了如下代碼:

if(IS_CGI) {

//CGI/FASTCGI模式下

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

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

}else {

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

}

這是問題的根源

訪問:http:www.xxx.com/public/index

在apache下$_SERVER['PHP_SELF']顯示./index.php/public/index

而在nginx中顯示空白

訪問:http:www.xxx.com/index.php/public/index

在apache下$_SERVER['PHP_SELF']顯示./index.php/public/index

而在nginx中顯示/public/index

最后發現是在nginx開啟PATH_INFO時出現了奇異。

我的nginx 中PATH_INFO段的配置是:

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

set $path_info $fastcgi_path_info;

fastcgi_param PATH_INFO $path_info; #只要設置了這行PHP_SELF返回的就出問題

try_files $fastcgi_script_name =404;

這個$_SERVER與服務器的配置有很大關系

try_files $fastcgi_script_name =404;這個去掉就可以了,$_SERVER['PHP_SELF']這個就會有的

不需要去掉 try_files $fastcgi_script_name =404; 這個配置是解決php.ini配置項cgi.fix_pathinfo=1時的安全漏洞的。這個問題是樓主的服務器php.ini配置為cgi.fix_pathinfo=0造成的錯誤

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的php_self nginx,nginx中的PATH_INFO为什么会影响$_SERVIER['PHP_SELF']的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。