wordpress /wp-load.php下的wp_fix_server_vars()函数解读
来源:互联网 发布:下手机电视直播软件 编辑:程序博客网 时间:2024/06/05 18:09
function wp_fix_server_vars() { global $PHP_SELF; $default_server_values = array( 'SERVER_SOFTWARE' => '', 'REQUEST_URI' => '', ); $_SERVER = array_merge( $default_server_values, $_SERVER ); // Fix for IIS when running with PHP ISAPI if ( empty( $_SERVER['REQUEST_URI'] ) || ( PHP_SAPI != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) { // IIS Mod-Rewrite if ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; } // IIS Isapi_Rewrite elseif ( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; } else { // Use ORIG_PATH_INFO if there is no PATH_INFO if ( !isset( $_SERVER['PATH_INFO'] ) && isset( $_SERVER['ORIG_PATH_INFO'] ) ) $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice) if ( isset( $_SERVER['PATH_INFO'] ) ) { if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; else $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; } // Append the query string if it exists and isn't null if ( ! empty( $_SERVER['QUERY_STRING'] ) ) { $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; } } } //*使用PHP写CGI的主机 // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) == strlen( $_SERVER['SCRIPT_FILENAME'] ) - 7 ) ) $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED']; // Fix for Dreamhost and other PHP as CGI hosts if ( strpos( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) !== false ) unset( $_SERVER['PATH_INFO'] ); // Fix empty PHP_SELF $PHP_SELF = $_SERVER['PHP_SELF']; if ( empty( $PHP_SELF ) ) $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace( '/(\?.*)?$/', '', $_SERVER["REQUEST_URI"] );}
1.CGI、SAPI、FastCGI的认识。
1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用 户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。
2、ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接 口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的 用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。
3、FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是 CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。
2.PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别
$_SERVER[’PHP_SELF’]
http://www.yoursite.com/example/ — – — /example/index.php
http://www.yoursite.com/example/index.php — – — /example/index.php
http://www.yoursite.com/example/index.php?a=test — – — /example/index.php
http://www.yoursite.com/example/index.php/dir/test — – — /dir/test
当我们使用
$_SERVER[‘REQUEST_URI’]
http://www.yoursite.com/example/ — – — /
http://www.yoursite.com/example/index.php — – — /example/index.php
http://www.yoursite.com/example/index.php?a=test — – — /example/index.php?a=test
http://www.yoursite.com/example/index.php/dir/test — – — /example/index.php/dir/test
$_SERVER[‘REQUEST_URI’]返回的是我们在URL里写的精确的地址,如果URL只写到”/”,就返回 “/”
$_SERVER[‘SCRIPT_NAME’]
http://www.yoursite.com/example/ — – — /example/index.php
http://www.yoursite.com/example/index.php — – — /example/index.php
http://www.yoursite.com/example/index.php — – — /example/index.php
http://www.yoursite.com/example/index.php/dir/test — – — /example/index.php
在所有的返回中都是当前的文件名/example/index.php
- wordpress /wp-load.php下的wp_fix_server_vars()函数解读
- wordpress学习第六篇(wp-includes/load.php)
- wordpress的数据库操作类wp-db.php
- wordpress配置wp-config.php的一个小坑
- WordPress中简单的wp-config.php配置
- wordpress保护wp-login.php和wp-cron.php
- WP触摸WordPress的插件
- WordPress 代码分析: wp-blog-header.php
- WordPress配置文件wp-config.php详解
- wordpress数据库配置文件wp-config.php
- wordpress安装wp-config.php文件问题
- 根目录index.php->wp-blog-header.php->wp-load.php->wp-config.php
- [译]通过wp-config来定制你的WordPress - 9IPHP-就爱PHP - 开源
- 【Wordpress】以修改文章页面single.php下的评论栏说明一些Wordpress的函数与页面
- wordpress学习第五篇(wp-setting.php)
- 小白解读微擎之路 之load()函数 ----loader.class.php
- WORDPRESS教程之WORDPRESS第十二课WP-SETTING.PHP文件详解
- wordpress wp-login跳转 的地址 login页面的制作
- JAVA反射调用无参构造、有参构造、普通方法、成员操作
- pip安装virtualenvwrapper遇到的问题
- telnet to switch by java
- Mac OS X下清理磁盘的小技巧
- hdu2072 单词数 / QUTOJ 1090: 单词个数统计
- wordpress /wp-load.php下的wp_fix_server_vars()函数解读
- java基础(二)
- WEB前端-JQuery-表单验证
- openwrt 定时任务 运行shell脚本
- 通信协议——Http、TCP、UDP 基础知识
- 90. Subsets II
- 正则表达式1
- 递推算法
- 正则表达式2