2013-07-14 3 views
1

Я использую WampServer версии 2.2 для Windows 7, Apache версии 2.2.22 и PHP версии 5.3.13.

Я пытаюсь использовать $this->url = $_SERVER['PATH_INFO']; в файле запроса, я получил эту ошибку:

Notice: Undefined index: PATH_INFO in C:\wamp\www\site\core\Request.php on line 8

Я пытался настроить файл httpd.conf добавить AcceptPathInfo На Для PHP в php.ini поэтому я добавил cgi.fix_pathinfo = 1, но это сделал не устранить проблему.

Как это исправить?

+1

вы перезагружать сервер после добавления 'CGI .fix_pathinfo = 1'? – kennypu

+0

да я сделал этот шаг – user2580159

ответ

5

PATH_INFO не определен, если вы не используете URL переписывания (а точнее: ссылки на ваш PHP файл «как каталог»), смотрите здесь: What exactly is PATH_INFO in PHP?

Так что, если вы делаете это: GET /foo/bar.php?query=foo тогда PATH_INFO будет быть неопределенным.

Если вы это сделаете: GET /foo/bar.php/baz?query=foo, то PATH_INFO будет определяться как /baz.

+0

Я новичок в php, вы можете мне объяснить больше? – user2580159

2

for example 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']); 
0

$ _SERVER ['PATH_INFO'] недоступен, если вы вызываете свой URL как http://localhost/.

Если вы загружаете этот сценарий на сервер и называете его его именем, эта же переменная станет доступной автоматически.

0

Вы можете использовать это вместо $ _SERVER [ 'PATH_INFO'] (это работа для меня)

$_SERVER['PATH_INFO'] is original version of 'PATH_INFO' before processed by PHP.

$_SERVER['ORIG_PATH_INFO'] 

ИЛИ:

$Path_Info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : ''); 
Смежные вопросы