记录PHP的超全局变量$_SERVER
$_SERVER是PHP中十分实用的超全局变量,在开发可移植的网站的时候会变得很有用。
下面我记录一下我自己常用到的几个变量
1.$_SERVER['SERVER_NAME']:记录了网站的域名。
2.$_SERVER['DOCUMENT_ROOT']:网站的根目录(就是在你系统下的绝对路径,在windows都是例如是C://wamp/www之类的,linux例如是/var/www/html)。
3.$_SERVER['SERVER_ADDR']:记录网站的IP地址
4.$_SERVER['REMOTE_ADDR']:记录访问者的IP地址
5.$_SERVER['SCRIPT_FILENAME']:访问的文件的路径
6.$_SERVER['REQUEST_SCHEME']:访问的文件的方式,常见为http
一般而言,在建站的时候,都会采用单一入口(多见为从index.php)的形式,在我看来,单一入口的好处有下面两点:
1.后面的程序可以统一处理,比如说要开发时候用到某个第三方类库,只需要在入口文件引入,其余的程序都会可以引用
2.路径可以统一处理。因为都是从index.php开始,所以引入文件只要相对于index.php的路径即可。
个人曾经二次开发过Discuz和WordPress,发现他们都有共同点就是都会在刚刚初始化的时候就定义一个变量存储文件夹的绝对路径,这样在以后引入其他文件的时候就会很方便,而且也有移植性。
关于网站根目录,举个栗子
Discuz在source/class/class_core.php定义了站点的根目录DISCUZ_ROOT,
它是这样定义的:
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -12));
__FILE__代表当前文件的路径,dirname(__FILE__)代表获取当前文件的根目录,substr(dirname(__FILE__), 0, -12)表示截取前面字符,不要最后12个,刚刚好也就是source/class这个12个字符。我的网站是/var/www/html/discuz/source/class/class_core.php,经过这么一处理,discuz站点根目录就得出是/var/www/html/discuz/,看上去复杂其实自己推算一下还是很容易得出的。
WordPress在wp-configs里定义站点根目录ABSPATH。
直接更方便:
define('ABSPATH', dirname(__FILE__) . '/');
而为了方便前端网页开发,我还会手痒定义一个域名绝对路径,何为域名绝对路径呢?就是拿wordpress来说吧,例如http://localhost/wordpress/index.php/2016/10/31/001.html这个页面,那么他的域名绝对根目录就是http://localhost/wordpress/,以后引入图片的时候只需要相对在wordpress的根目录下引入图片就好了,以后移植到其他服务器,就不会影响了,因为这个域名绝对路径是在程序运行的时候就定义好的。这个域名根目录是在上面的站点根目录去改进的。
只需要把网站的根目录改为域名,其他部分一样,开头加个请求方式就完美了。
例:站点根目录为/var/www/html/wordpress/,改为http://www.domain.com/wordpress/
define('ABSURL', $_SERVER['REQUEST_SCHEME'].'://'.str_replace($_SERVER['DOCUMENT_ROOT'], $_SERVER['SERVER_NAME'], ABSPATH));
记录PHP的超全局变量$_SERVER的更多相关文章
- PHP $_SERVER超全局变量
$_SERVER是php中的超全局变量,一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建. ...
- PHP中的$_SERVER超全局变量
详细参数 PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document ...
- PHP超全局变量
PHP提供了九种超全局变量(数组) 1 $_GET //地址栏上获得的值 2 $_POST //POST表单发送的数据 3 $_REQUEST //GET和POST的内容全都有 4 $_SERVER ...
- PHP 中的超全局变量
(1)$_GET[].一个包含所有PHP 从客户端浏览器接收的GET变量的数组. (2)$_POST[].一个包含所有PHP 从客户端浏览器接收的POST变量的数组. (3)$_COOKIE[].一个 ...
- php基础(三)超全局变量
超全局变量 在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量. PHP 全局变量 - 超全局变量 PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可 ...
- 【二十三】php之预定义超全局变量
php提供了九种预定义超全局变量: $_GET.$_POST.$_REQUEST.$_SERVER.$_ENV.$_FILE. $_COOKIE.$_SESSION. $GLOBALS 1.$_GET ...
- PHP全局变量,超全局变量
php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS 引用全局 ...
- PHP 5 全局变量 - 超全局变量
PHP 全局变量 - 超全局变量 PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. ...
- PHP之旅4 php 超全局变量
预定义数组: 自动全局变量---超全局数组 1.包含了来自web服务器,客户端,运行环境和用户输入的数据 2.这些数组比较特别 3.全局范围内自动生效,都可以直接使用这些数组 4.用户不能自定义这些数 ...
随机推荐
- 类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
解决方法:添加System.Data.Linq.dll引用 http://www.cnblogs.com/m84641693/archive/2010/07/26/1785100.html http: ...
- 使用Expression实现数据的任意字段过滤(2)
上一篇<使用Expression实现数据的任意字段过滤(1)>, 我们实现了通过CriteriaCollectionHandler对象来处理集合数据过滤.通过适当的扩展, 应该可以满足一般 ...
- Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在 ...
- ABP Zero示例项目登录报错“Empty or invalid anti forgery header token.”问题解决
ABP Zero项目,登录时出现如图"Empty or invalid anti forgery header token."错误提示的解决方法: 在 WebModule.cs的P ...
- Node.js之sails框架
先开一坑,有空更新,记录最近钉钉项目上对node及sails框架的学习记录和理解
- 使用 Vue 2.0 实现服务端渲染的 HackerNews
Vue 2.0 支持服务端渲染 (SSR),并且是流式的,可以做组件级的缓存,这使得极速渲染成为可能.同时, 和 2.0 也都能够配合 SSR 提供同构路由和客户端 state hydration.v ...
- 微信小程序注册
小程序是一种新的开放能力,可以在微信内被便捷地获取和传播,同时具有出色的使用体验.开发者可以根据平台提供的能力,快速地开发一个小程序. 开放内容包括: 1.开放注册范围:企业.政府.媒体.其他组织: ...
- SharePoint 2013 入门教程
以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...
- UITableViewCell定制
UITableViewCell定制 效果 特点 1.可以添加不同的TableViewCell,可以定制不同的cell样式; 2.可以动态改变cell的高度; 3.可以随意摆放你cell的位 ...
- 最新GHOST XP系统下载旗舰增强版 V2016年
系统来自:系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年3月 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插 ...