Почему возникает ошибка при использовании $_SERVER['PATH_INFO']?

Как исправить ошибку "Undefined array key "PATH_INFO" в D:\OSPanelNew\domains\test-php\123.php на линии 1, возникшую при использовании Open Server 5.4.3 с Apache 2.4 и PHP 8.1?
  • 2 мая 2024 г. 11:00
Ответы на вопрос 3
Ошибка "Undefined array key "PATH_INFO" возникает из-за того, что в новых версиях PHP и серверов, таких как Apache 2.4, значения по умолчанию в некоторых переменных окружения могут быть изменены или отключены.

Для исправления ошибки можно использовать следующий код для проверки наличия и использования переменной $_SERVER['PATH_INFO']:

```php
if (isset($_SERVER['PATH_INFO'])) {
    $path_info = $_SERVER['PATH_INFO'];
} else {
    $path_info = '/';
}
```

Этот код проверяет существование переменной $_SERVER['PATH_INFO'] и присваивает ей значение, если она существует, или устанавливает значение по умолчанию в случае ее отсутствия. Таким образом, вы избегаете ошибки "Undefined array key" при использовании переменной $_SERVER['PATH_INFO'].
<a href="https://www.php.net/manual/en/reserved.variables.server.php" rel="nofollow">RTFM</a> . <br/> <blockquote>'PATH_INFO'<br/>
    Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URI <a href="http://www.example.com/php/path_info.php/some/stuff?foo=bar" rel="nofollow">www.example.com/php/path_info.php/some/stuff?foo=bar</a>, then $_SERVER['PATH_INFO'] would contain /some/stuff. </blockquote> По какому URL обращаетесь и что ожидаете увидеть в результате?
Нельзя просто так взять и обратиться к элементу массива по ключу, нужно проверить "а был ли мальчик". <br/> <pre><code class="php">if(array_key_exists('PATH_INFO', $_SERVER)) // проверяем наличие ключа
{
  echo $_SERVER['PATH_INFO']; // что-то делаем с элементом массива по ключу, например, печатаем.
}</code></pre>
Похожие вопросы