ThinkPHP在CGI模式下的bug
程序员文章站
2022-06-13 11:13:15
...
ThinkPHP在CGI模式下的bug
php经验分享交流群:323899029
一般情况下$_SERVER['PHP_SELF'] 与 $_SERVER['SCRIPT_NAME'] 没有什么区别,但是如果PHP是以CGI模式运行的话两者就有差异
建议使用$_SERVER['SCRIPT_NAME'] ;
以下是有bug的代码(ThinkPHP/ThinkPHP.php第90行):
if(!IS_CLI) {
// 当前文件名
if(!defined('_PHP_FILE_')) {
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['SCRIPT_NAME']);//有问题,应该将$_SERVER['PHP_SELF']改成:$_SERVER['SCRIPT_NAME']
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
}
if(!defined('')) {
$_root = rtrim(dirname(_PHP_FILE_),'/');
define('', (($_root=='/' || $_root=='\\')?'':$_root));
}
php经验分享交流群:323899029
转载自:http://www.phpskill.com
php经验分享交流群:323899029
一般情况下$_SERVER['PHP_SELF'] 与 $_SERVER['SCRIPT_NAME'] 没有什么区别,但是如果PHP是以CGI模式运行的话两者就有差异
建议使用$_SERVER['SCRIPT_NAME'] ;
以下是有bug的代码(ThinkPHP/ThinkPHP.php第90行):
if(!IS_CLI) {
// 当前文件名
if(!defined('_PHP_FILE_')) {
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['SCRIPT_NAME']);//有问题,应该将$_SERVER['PHP_SELF']改成:$_SERVER['SCRIPT_NAME']
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
}
if(!defined('')) {
$_root = rtrim(dirname(_PHP_FILE_),'/');
define('', (($_root=='/' || $_root=='\\')?'':$_root));
}
php经验分享交流群:323899029
转载自:http://www.phpskill.com
AD:真正免费,域名+虚机+企业邮箱=0元
上一篇: 为什么基础很好的程序员代码依旧写的很烂?
下一篇: 文件传输工具 文件上传程序的全部源码
推荐阅读
-
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
-
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
-
在nginx中配置pathinfo模式支持thinkphp的URL重写
-
Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持
-
Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式
-
在IE11下调出兼容模式的方法
-
apache下运行cgi模式的配置方法
-
解决ThinkPHP在Nginx下无法使用pathin方式的问题
-
javascript在严格模式下的执行结果分享
-
PHP5在Apache下的两种模式的安装