2

我在 Windows 7 上使用 WampServer 2.2 版、Apache 2.2.22 版和 PHP 5.3.13 版。

我尝试$this->url = $_SERVER['PATH_INFO'];在请求文件中使用,我收到此错误:

注意:未定义索引:第 8 行 C:\wamp\www\site\core\Request.php 中的 PATH_INFO

我尝试将httpd.conf文件配置为在其中添加 AcceptPathInfo On For PHP,php.ini所以我添加了cgi.fix_pathinfo = 1,但这并没有解决问题。

我怎样才能解决这个问题?

4

5 回答 5

6

PATH_INFO如果您不使用 URL 重写(或者更确切地说:将您的 PHP 文件“作为目录”引用),则未定义,请参见此处:PHP 中的 PATH_INFO 到底是什么?

所以如果你这样做:GET /foo/bar.php?query=foothenPATH_INFO将是未定义的。

如果你这样做:GET /foo/bar.php/baz?query=foothenPATH_INFO将被定义为/baz.

于 2013-07-14T01:10:08.697 回答
2

例如ROOT = 'C:\wamp\www\mySite'

$_SERVER['PATH_INFO']如果您使用以下代码,获得相同的结果 ( ) 可能对您有所帮助:

<?php
    class App{
        public static function get__PATH_INFO($path){
            $path_elements = explode("/", $path);
            $tempPI = "";
            if (isset($path_elements[2])){
                for ($i = 2 ;$i < count($path_elements); $i++ )
                    $tempPI .= "/".$path_elements[$i];
            }
            return $tempPI;
        }
    }
?>

get__PATH_INFO()然后在另一个文件中调用该函数:

$path_info = App::get__PATH_INFO($_SERVER['REQUEST_URI']);
于 2015-08-30T02:59:56.443 回答
2

您可以使用它代替 $_SERVER['PATH_INFO'] (它对我有用)

$_SERVER['PATH_INFO'] 是 PHP 处理之前的 'PATH_INFO' 的原始版本。

$_SERVER['ORIG_PATH_INFO']

或者:

$Path_Info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : '');
于 2017-11-13T19:26:30.140 回答
0

刚刚遇到同样的问题,对于 localhost 没有 PATH_INFO。但是有一种方法可以使用 PHP parse_url 函数使其工作(请参阅PHP:parse_url - 文档

parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)

如果您使用https://example.org/example#stuff?q=1它,它将返回/example

于 2018-05-25T08:09:44.663 回答
-1

如果您将 URL 称为http://localhost/ ,则 $_SERVER['PATH_INFO'] 不可用。

如果您将此脚本上传到服务器并通过其名称调用它,则此相同的变量将自动变为可用。

于 2015-11-26T18:11:27.637 回答