Исправление ошибки «Notice: undefined variable» в PHP
Ошибка undefined variable появляется при попытке обратиться к не существующей (не объявленной ранее) переменной:
Если в настройках PHP включено отображение ошибок уровня E_NOTICE, то при запуске этого кода в браузер выведется ошибка:
Notice: Undefined variable: text in D:\Programs\OpenServer\domains\test.local\index.php on line 2
Как исправить ошибку
Нужно объявить переменную перед обращением к ней:
Нет уверенности, что переменная будет существовать? Можно указать значение по-умолчанию:
Есть ещё один вариант исправления этой ошибки — отключить отображение ошибок уровня E_NOTICE:
Не рекомендую этот вариант. Скрытие ошибок вместо их исправления — не совсем правильный подход.
Кроме этого, начиная с PHP 8 ошибка undefined variable перестанет относиться к E_NOTICEи так легко отключить её уже не удастся.
Если ошибка появилась при смене хостинга
Часто ошибка возникает при переезде с одного сервера на другой. Практически всегда причина связана с разными настройками отображения ошибок на серверах.
По-умолчанию PHP не отображает ошибки уровня E_Notice, но многие хостинг-провайдеры предпочитают настраивать более строгий контроль ошибок. Т.е. на старом сервере ошибки уже были, но игнорировались сервером, а новый сервер таких вольностей не допускает.
Остались вопросы? Добро пожаловать в комментарии. 🙂
Undefined variables: recommendedVersion and recommendedVersionEndOfSupport
I went into the «configuration.php», changed error reporting to «maximum», and now my Joomla admin page is suddenly blank white. Then when I go to my backend login page, I get the following error messages:
Notice: Undefined variable: recommendedVersion in /home/mchardism/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 173 Notice: Undefined variable: recommendedVersionEndOfSupport in /home/mchardism/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 174 Fatal error: Call to a member function format() on null in /home/mchardism/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 174
So when I go to the phpversioncheck.php, lines 173 and 174, I see this: And this is where I’m stuck. I don’t know what I need to change in these lines to fix the issue. I’ve never opened this phpversioncheck.php file before and I’m not sure why it is suddenly giving me issues. I am using: Joomla 3.6.5
You should not give too much attention to this error (this is just a PHP version check in this plugin), but you should update Joomla to the latest version and most probably this error will disappear. Joomla 3.6 is quite outdated. Why have you turned on maximum error reporting by the way?
I googled the white admin screen issue and saw a number of different posts suggest setting the error reporting to «maximum.» I generally don’t know what I’m doing.
Ohh, I understand it now. There was already an error (with the white screen) and then you turned on maximum error reporting. Probably the server is using a newer PHP version and Joomla 3.6 does not support that PHP version. Maybe the PHP version has to be set back to PHP 5.6 and then a lot of updates, but it is better if you ask someone expert to help you with updating your Joomla site.
4 Answers 4
In order to fix it, open /home/mchardism/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php , find between the lines #108-132 the php version you use and change the date for eos (add few years, for example).
eos means End of Support and as @sharky said, this error occurs on a combination of outdated PHP and Joomla! versions . By changing eos date you simply allow to code continue to work without actual PHP/Joomla updating. For example I use Joomla 3.7.3 and PHP 5.6, but for today the latest versions are 3.9.14 and 7.4.1
This is more preferable way than accepted @omasan-esimaje ‘s answer, because in this case you still have the left vertical menu in admin panel. mod_quickicon is responsible for this menu, so disabling this plugin you disable this menu 🙂
Also in my case it was necessary to set public $error_reporting to development (ie public $error_reporting = ‘development’ ) in configuration.php , instead of maximum , in order to see the error.
In case, if you want to disable the plugin (according to @omasan-esimaje ‘s answer):
The easiest way to open DB is to download Adminer (Database management in a single PHP file) and put it next to configuration.php file, then open yoursite.com/adminer-x.y-z.php where x.y-z is the version of Adminer.
Necessary credentials for connection to DB you can find also in configuration.php and they look like:
public $host = 'localhost'; public $user = 'juser'; public $password = 'jpass'; public $db = 'jdb';
For security reason remove Adminer once you disable the plugin.