検索
ホームページ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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。