搜索
首页php教程php手册php中$_SERVER[PATH_INFO]变量使用详解

如果你希望你的php可以使用$_SERVER[PATH_INFO]我们需要让Apache支持pathinfo才可以了,当然大部份apache默认就是支持pathinfo的哦.

最后总结测试环境:

Ubuntu Server 14.04 
PHP Version 5.5.9-1ubuntu4 
Apache/2.4.7 (Ubuntu)

PATH_INFO是服务器状态中的一个参数,通过$_SERVER['PATH_INFO']可以查看内容,$_SERVER数组中除了PATH_INFO外,还有非常多的数据,比如REQUEST_URI包含了更多的信息.

还有容易混淆的概念:pathinfo指的是PHP4(4.0.3)的一个功能,用于返回一个文件的路径信息.

Apache默认支持PATH_INFO功能,网上的很多教程不是需要修改apache的配置文件,就是要修改php的配置文件,其实完全不用修改任何文件,可以采用以下两种方式来验证PATH_INFO功能.

方式一:原生代码测试

在一个全新的系统上,比如新建一个Ubuntu 14.04 Server虚拟机,仅安装OpenSSH和LAMP软件包,在Apache的主路径/var/www/html目录下新建测试文件pathinfo.php,内容为:

假设虚拟机的IP是192.168.1.106,访问http://192.168.1.106/pathinfo.php,会得到一个空白的页面,因为这个URL没有包含PATH_INFO信息.

更换网址测试http://192.168.1.106/pathinfo.php/year/2014/,页面上会显示/year/2014/,说明可以识别PATH_INFO信息.

方法二:用ThinkPHP测试

很多的PHP框架都需要获取PATH_INFO的值,以ThinkPHP为例,基本的步骤是:下载最新的ThinkPHP到/var/www/html/目录,并解压,修改文件的权限为www-data

访问网址http://192.168.1.106/index.php,会自动生成Application下的文件列表,编辑文件Application/Home/Controller/IndexController.class.php,内容为:

<?php 
    namespace HomeController; 
    use ThinkController; 
    class IndexController extends Controller { 
        public function index(){ 
            $this->show(&#39;Hi,All&#39;,&#39;utf-8&#39;); 
        }  
        public function test(){ 
            $this->show(&#39;test&#39;); 
        } 
    }

当访问http://192.168.1.106/index.php的时候,本质上是访问了http://192.168.1.106/index.php/Home/Index/index,如果后面这个长的可以访问,说明PATH_INFO是正常的.

如果存在异常,ThinkPHP可以能报错为无法加载模块/控制器或非法操作,可以通过访问test方法来验证,输入网址http://192.168.1.106/index.php/Home/Index/test测试,页面会正常显示test.

补充:Apache2.2.22开启PathInfo模式支持,在配置文件中加入:

<Files *.php> 
AcceptPathInfo On 
</Files>

这样 Apache 就可以支持针对 php 文件的 PathInfo 了,于是,小柒又充满希望的试了一下,可惜,还是没有成功.

我想,这PathInfo跟URL有关,那会不会是因为Apache服务器没有开启mod_rewrite模块的关系呢?于是,我在Apache的配置文件,Apache安装目录的conf文件夹下的httpd.conf文件,里找到:

#LoadModule rewrite_module modules/mod_rewrite.so

将前面的#去掉,改为:LoadModule rewrite_module modules/mod_rewrite.so

保存,重启服务器后,项目终于可以使用PathInfo模式访问了.


本文链接:

收藏随意^^请保留教程地址.

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。