Почему возникает ошибка
Ошибка undefined variable появляется при попытке обратиться к не существующей (не объявленной ранее) переменной:<?php
echo $text;
Если в настройках PHP включено отображение ошибок уровня E_NOTICE, то при запуске этого кода в браузер выведется ошибка:
Notice: Undefined variable: text in D:\Programs\OpenServer\domains\test.local\index.php on line 2
Как исправить ошибку
Нужно объявить переменную перед обращением к ней:
$a = '';
echo $a;
Нет уверенности, что переменная будет существовать? Можно указать значение по-умолчанию:
<?php
if(!isset($text))
$text = '';
echo $text;
Или сокращённые варианты:
<?php
// С оператором объединения с null (PHP 7+)
$text = $text ?? '';
// С оператором присваивания значения null (PHP 7.4+)
$text ??= '';
Есть ещё один вариант исправления этой ошибки - отключить отображение ошибок уровня E_NOTICE:
<?php
error_reporting(E_ALL & ~E_NOTICE);
echo $a; // Ошибки не будет
Не рекомендую этот вариант. Скрытие ошибок вместо их исправления - не совсем правильный подход.
Кроме этого, начиная с PHP 8 ошибка undefined variable перестанет относиться к E_NOTICEи так легко отключить её уже не удастся.
Если ошибка появилась при смене хостинга
Часто ошибка возникает при переезде с одного сервера на другой. Практически всегда причина связана с разными настройками отображения ошибок на серверах.
По-умолчанию PHP не отображает ошибки уровня E_Notice, но многие хостинг-провайдеры предпочитают настраивать более строгий контроль ошибок. Т.е. на старом сервере ошибки уже были, но игнорировались сервером, а новый сервер таких вольностей не допускает.
Остались вопросы? Добро пожаловать в комментарии. :)