Глава 14 · 14.6
Fouten след ъпгрейд на PHP и намиране на лога с грешки
Повишили сте версията на PHP и сега Вашият уебсайт е бял, показва съобщение за грешка или част от него вече не работи. Това почти винаги се дължи на плъгин, тема или собствен код, който не е съвместим с новата версия. Без паника: връщате старата версия за минута, а след това спокойно проучвате какво не е наред.
Стъпка 1: върнете старата версия
Отидете на Select PHP version, изберете отново версията, която сте имали преди, и кликнете на Apply (вижте Избор на версия на PHP (Select PHP version)). Вашият уебсайт тогава веднага отново ще работи, както преди. Ако сте променили разширения или опции при новата версия, те остават запазени за следващ опит.
Стъпка 2: потърсете съобщението за грешка в лога с грешки
PHP записва грешките в Error log на Вашия домейн. Там е посочено точно кой файл и кой ред причинява проблема.
- В DirectAdmin кликнете под System Info & Files на Site summary & logs.
- При Вашия домейн кликнете на Error log.
- Погледнете последните редове, най-отдолу. Потърсете редове с PHP Fatal error, PHP Parse error или PHP Warning (1).

Повече за логовете прочетете в Site summary & logs: лог файлът за грешки и лог файлът за достъп.
Стъпка 3: разберете съобщението
В съобщението е посочен пътят до файла. По него обикновено се вижда кой плъгин или коя тема е причината. Няколко примера:
| Виждате в съобщението | Значение |
|---|---|
| .../wp-content/plugins/naam-van-plugin/... | Този плъгин не работи с новата версия. Актуализирайте го или потърсете заместител, ако вече не се поддържа. |
| .../wp-content/themes/naam-van-thema/... | Вашата тема е твърде стара. Актуализирайте я или помолете автора за ъпдейт. |
| Call to undefined function mysql_connect() | Много стар код, който все още използва функции отпреди PHP 7. Той трябва да бъде пренаписан. |
| Call to undefined function с друго име на функция | Често липсва разширение. Проверете кое разширение съответства на тази функция и го активирайте (вижте Включване и изключване на PHP разширения). |
| Allowed memory size of ... bytes exhausted | Скриптът разполага с твърде малко памет. Увеличете memory_limit (вижте PHP опции: upload_max_filesize, memory_limit и max_execution_time). |
| Maximum execution time of ... seconds exceeded | Скриптът е отнел твърде много време. Увеличете max_execution_time или проучете защо е толкова бавен. |
Стъпка 4: актуализирайте и опитайте отново
- Направете резервно копие (вижте Back-up и възстановяване: самостоятелно създаване на резервно копие в DirectAdmin).
- Актуализирайте WordPress (или друг Ваш софтуер), темата си и всичките си плъгини, докато старата версия на PHP все още е активна.
- Премахнете плъгините, които не използвате.
- Включете отново новата версия на PHP и тествайте уебсайта си отново. Погледнете отново и в лога с грешки.
Съвет: Искате ли първо да тествате, без това да притеснява посетителите? Направете с Installatron копие на сайта си на поддомейн (вижте Клониране и създаване на тестова среда (staging)) и поставете само тази папка на новата версия чрез .htaccess (вижте PHP-настройки по папка и чрез .htaccess).
Временно показване на грешките на страницата
Виждате само бял екран и в лога с грешки няма нищо полезно? Тогава можете временно да показвате грешките на самата страница. В Select PHP version, в раздела Options, активирайте отметката при display_errors. Отворете страницата отново: сега ще видите съобщението за грешка. Веднага след това изключете отново display_errors, тъй като такова съобщение може да разкрие информация за Вашия уебсайт на всеки.
Ако използвате WordPress, това може да стане и с тези редове в wp-config.php, над реда That's all, stop editing!: define('WP_DEBUG', true); и define('WP_DEBUG_LOG', true);. WordPress тогава записва грешките във wp-content/debug.log. Премахнете ги впоследствие или ги поставете на false.
Предпочитате да го решим вместо Вас?
Не се получава или Вашият уебсайт не е актуализиран от години? С PHP ъпгрейда ние правим Вашия уебсайт съвместим с актуална версия на PHP, на фиксирана цена. Ако не се получи, си получавате парите обратно.
