PHP和PHPINFO
PHP开放源码和跨越平台,PHP可以运行在WINDOWS和多种版本的LINUX上。它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小。PHP消耗的资源较少,当PHP作为ApacheWeb服务器一部分时,运行代码不需要调用外部二进制程序,服务器不需要承担任何额外的负担。
关于PHP $_SERVER的一些使用方式
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言
$_SERVER['REMOTE_ADDR'] //当前用户 IP 。
$_SERVER['REMOTE_HOST'] //当前用户主机名
$_SERVER['REQUEST_URI'] //URL
$_SERVER['REMOTE_PORT'] //端口。
$_SERVER['SERVER_NAME'] //服务器主机的名称。
$_SERVER['PHP_SELF']//正在执行脚本的文件名
$_SERVER['argv'] //传递给该脚本的参数。
$_SERVER['argc'] //传递给程序的命令行参数的个数。
$_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。
$_SERVER['SERVER_SOFTWARE'] //服务器标识的字串
$_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本
$_SERVER['REQUEST_METHOD']//访问页面时的请求方法
$_SERVER['QUERY_STRING'] //查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
$_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。
$_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容
$_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容。
$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。
$_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN'] #管理员信息
$_SERVER['SERVER_PORT'] #服务器所使用的端口
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型
- 举个两小例子
两种PHP获取服务器端IP地址的方法
if('/'==DIRECTORY_SEPARATOR){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=@gethostbyname($_SERVER['SERVER_NAME']);
}
echo $server_ip;
/**
* 获取服务器端IP地址
* @return string
*/
function get_server_ip(){
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=$_SERVER['LOCAL_ADDR'];
}
}else{
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
echo get_server_ip();
为什么要使用phpinfo呢?
这一部分非常非常重要
PHP中提供了PHPInfo()函数,该函数返回 PHP 的所有信息,包括了 PHP 的编译选项及扩充配置、PHP 版本、服务器信息及环境变量、PHP 环境变量、操作系统版本信息、路径及环境变量配置、HTTP 标头、及版权宣告等信息。
PHPInfo()函数主要用于网站建设过程中测试搭建的PHP环境是否正确,很多网站在测试完毕后并没有及时删除,因此当访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险
下面我们重点学习一下:
(1)语法:int phpinfo(void);
他的返回值是一个整数
(2)使用方式:列如新建一个.php文件vi test.php
输入:<?php phpinfo(); ?>
来看一下泄漏了哪些比较敏感的信息。
1.++绝对路径(_SERVER[“script_FILENAME”])++
找到phpinfo()页面可以直接找到网站的绝对路径,对于写shell和信息搜集是必不可少的。
ep1:(PHP $_SERVER['SCRIPT_FILENAME'] 与 FILE)
<?php
echo 'SCRIPT_FILENAME 为:',$_SERVER['SCRIPT_FILENAME'];
echo '<br />';
echo '__FILE__ 为:',__FILE__;
?>
上述测试代码拷贝至 test.php 并访问该文件(http://localhost/test.php),得到如下结果:
SCRIPT_FILENAME 为:E:/web/html/php/test.php
__FILE__ 为:E:\web\html\php\test.php
2.++支持的程序++
可以通过phpinfo()
查看一些特殊的程序服务,在没有思路的情况下,可以着重找一下ssrf
3.++泄漏真实ip(_SERVER[“SERVER_ADDR”]或SERVER_ADDR)++
4.++泄漏缓存文件地址(_FILES[“file1”])++
向phpinfo() post一个shell可以在_FILES[“file1”]中看到上传的临时文件,如果有个lfi,便可以直接getshell了。
5.++一些敏感配置++
allow_url_include、allow_url_fopen、disable_functions、open_basedir、short_open_tag等等。
比如allow_url_include可用来远程文件包含、disable_functions用来查看禁用函数,绕过执行、查看是否开启open_basedir,用p牛的绕过open_basedir的方法有可能能读一些没权限的目录等等。
我们简单用图片说明一下
我们可以看到PHP的版本
加载的php.ini文件,我们是可以看到该文件的路径的
还有就是php的zend(一般用于加密/提高性能)的版本和zend optimizers(一个为加速php脚本的执行,第二为给用zend加密的文件解密)的版本
PS:如果php的脚本没有经过加密,那么zend optimizer可以不用安装!论坛文件目录中的api里面的一些文件是经过加密的,
supesite( SupeSite可以实现对站内的论坛(Discuz!)、个人空间(X-Space)信息进行内容聚合。任何站长,都可以通过SupeSite,轻松构建一个面向Web2.0的社区门户。)的主程序的文件也是经过加密的,所以对于论坛来说,如果你想使用支付宝,奇虎搜索什么的,就必须安装zend optimizers,如果你想要安装supesite,必须得安装好zend optimizer!关于zend optimizer的加速功能,一般可以让php的执行速度提高到30%左右!
所以如果是独立主机用户,最好是将zend optimizer安装上,这样不仅可以起到加速的作用,而且可以使你的空间完全
支持论坛和supesite!
PS:
简单介绍一下安装过程
下载安装包后,直接双击安装即可,安装过程要你选择 Web Server 时,选择 Apache 2.x ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。
Zend Optimizer 的加密作用
我们自己写一个php文件,里面就1行代码
<?php phpinfo(); ?>
把它保存为phpinfo.php,上传到服务器上,然后访问这个 PHP 文件。
如果看到里面有 Zend Optimizer 的版本信息。就说明服务器上支持 Zend Optimizer。版本信息一般是这样的:
with Zend Optimizer v版本号, Copyright (c) 1998-2007, by Zend Technologies
只要包含有 with Zend Optimizer,说明服务器支持 Zend Optimizer
上面指出zend的内核版本,下面指出zend optimizers版本,要使用我们的SupeSite产品,必须还得安装后者。当然zend optimizers安装时候,在页面里还有专门有一个zend optimizers模块,见图5
加载的模块
phpinfo会列出你的系统的php加载了哪些模块,然后下面介绍几个比较重要的模块,第一个是gd库模块,很多用户不知道他的空间或者系统是否支持gd库,所以不确定是否可以用水印和缩略图功能,在phpinfo页面,同样可以展示gd库的信息,包括版本,freetype库,gif支持,jpg支持,png支持等等,这些都是很有用的信息,比如支持水印图片为gif的,那你的gd库就有得gig支持。如图所示:
mysql模块
第二个重要的就是mysql模块。很多用户认为只要成功安装mysql,他就可以安装Discuz!论坛了,其实这
是一个误区,因为你没有确认你的php是否加载上了mysql支持。phpinfo就可以很好的检验到。如果你的
phpinfo页面没有列出mysql模块扩展,那说明你的环境没有配置好扩展模块
php的其他扩展模块吧,比如mbstring,是支持宽字符集;ftp,这是支持Discuz!论坛后台的ftp附件,还有就是socket,这个是有些安装了supesite播客的用户支持影音上传的;ming,是支持Discuz!后台的Flash 验证码的。
phpinfo实在是一个很好的检验php环境的工具,大家如果遇到问题,不妨按照我们上面的,看看是不是哪些模块没加载上,如果访问phpinfo页面的时候变成了下载,那是你的php本身就没安好
PHP和PHPINFO的更多相关文章
- php-into 安装时遇到的各种问题,php -m跟phpinfo()显示不一致
系统环境 阿里云服务器 ubuntu nginx php5.4.23 在Yii2中格式显示用户currency,所以需要intl模块,没啥说的装吧. apt-get install libicu-de ...
- windows7下php5.4成功安装imageMagick,及解决php imagick常见错误问题。(phpinfo中显示不出来是因为:1.imagick软件本身、php本身、php扩展三方版本要一致,2.需要把CORE_RL_*.dll多个文件放到/php/目录下面)
windows7下 php5.4成功安装imageMagick . (phpinfo中显示不出来是因为:1.软件本身.php本身.php扩展三方版本要一致,2.需要把CORE_RL_*.dll多个 ...
- phpinfo有mysqlnd没有mysql
这个着实是个坑,使用phpinfo查看,明明有mysqlnd这个项目,就是找不到mysql.以前用直接运行php.exe的方法可以看到错误,可是这次就没有任何错误. 中间把php的安装路径添加到了系统 ...
- phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
[题外话]phpinfo()这个函数可以查看很多php的信息,要 记得使用 phpinfo() 的很多部分有两个Column:Local Value(局部变量)和 Master Value(主变量) ...
- PHP安全函数phpinfo()
phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息. 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec(). 危险等级 ...
- phpinfo详解
php的很多信息都可以从phpinfo中获取,下面就详细了解下phpinfo的输出内容 1 php版本信息 第一行显示当前php版本 PHP Version 5.5.12 2 php.ini文件的位置 ...
- phpinfo中查不到memcache信息问题
已经安装了php的memcache扩展,可是怎么都不能通过phpinfo查询到,实际使用时提示扩展未安装.为什么呢?百般寻求解决方法,才发现主要有以下两点原因: 1.使用的php和安装扩展的php不是 ...
- 如何创建phpinfo查看php信息?
创建一个简单的文本文档并命名为phpinfo.php 代码如下: <?php phpinfo(); ?> 将上面的代码写入并保存该文档,通过浏览器访问这个文件即可显示PHP信息
- 为什么你的 phpinfo() 无法显示
一.问题描述 编写了一个php文件test.php,代码如下: <?php echo phpinfo(); ?> 浏览器访问了一下,却返回了 NULL. 二.问题定位及解决 网上查了下,大 ...
- PHP Warning: phpinfo(): It is not safe to rely on the system's timezone setting
错误描述: PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *re ...
随机推荐
- MySQL 性能监控4大指标——第二部分
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...
- Google Play内购测试
Google Play内购测试 最近项目做海外版本,接入Google wallet支付后,测试验证比较繁琐,故记录一下. Google wallet支付方式接入完成后,需要按照如下步骤设置,才可以进行 ...
- 固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异
固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异 在看这篇文章之前可以先看一下下面的文章: SSD小白用户收货!SSD的误区如何解决 这样配会损失性能?实测6种特殊装机方式 听说固态 ...
- jqgrid 使用altRows和altclass属性实现隔行换色
如果只是简单的区别奇偶行的话,设置两个属性,加一个样式 altRows:true, altclass:'someClass' .someClass { background-color: #DDDDD ...
- Oracle 与 mysql 建立透明网关
1.1.1. 文档编写目的 项目上需要做与Mysql数据库的对接,然而Oracle与Mysql数据库是异构的,因此这里采用透明网关的方式来解决. 另,项目上的环境为APP:12.2.6 ; DB: ...
- pong game using ncurses
bounce2d2.c /* * bounce2d 1.0 * bounce a character (default is 'o') around the screen * defined by s ...
- AD域创建用户无法登录
怎么登录都无法登录 解决办法: 创建用户的时候 将用户下次登录时须更改密码的勾去掉 不然需要修改密码才可以登录
- 转:winform 打包自动安装数据库
vs2005 打包,并自动安装SQL数据库.创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“ ...
- 16. 窗口函数 (Window Function) 的使用
从SQL Server 2005起,SQL Server开始支持窗口函数 (Window Function),以及到SQL Server 2012,窗口函数功能增强,目前为止支持以下几种窗口函数: 1 ...
- Redis学习---面试基础知识点总结
[学习参考] https://www.toutiao.com/i6566017785078481422/ https://www.toutiao.com/i6563232898831352323/ 0 ...