Вопрос или проблема
Мой сайт на WordPress выдает ошибки устаревшего PHP в файлах wp-include.
Я начинающий разработчик WordPress и работаю над своим сайтом.
Я засыпан этими ошибками и испытываю крайне высокое потребление процессора на своем сайте. Активирование определенного набора плагинов приводит к появлению ошибки устаревшего PHP в моей установке WordPress.
Я использую PHP 7.4 и столкнулся с тем же на PHP 8.1.
Поскольку эти ошибки возникают из папки wp-includes, я подозреваю, что WordPress пытается мне что-то сказать, что я не понимаю.
Во-вторых, что это, черт возьми, “Cookie Jar”?
[16-Mar-2023 18:08:11 UTC] PHP Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Cookie/Jar.php on line 63
[16-Mar-2023 18:08:11 UTC] PHP Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Cookie/Jar.php on line 73
[16-Mar-2023 18:08:11 UTC] PHP Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Cookie/Jar.php on line 89
[16-Mar-2023 18:08:11 UTC] PHP Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Cookie/Jar.php on line 102
[16-Mar-2023 18:08:11 UTC] PHP Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Cookie/Jar.php on line 111
[16-Mar-2023 18:08:12 UTC] PHP Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40
[16-Mar-2023 18:08:12 UTC] PHP Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51
[16-Mar-2023 18:08:12 UTC] PHP Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68
[16-Mar-2023 18:08:12 UTC] PHP Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82
[16-Mar-2023 18:08:12 UTC] PHP Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in public_html/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
Пожалуйста, дайте совет о том, что может быть не так.
Эти предупреждения возникают, когда вы используете WordPress версии 6.1 или ниже на PHP версии 8.1 и выше. Вы должны понизить версию PHP до 8.0 или дождаться выхода WordPress версии 6.2, которая обновит библиотеку Requests для добавления совместимости с PHP 8.1. (На момент написания WP 6.2 находится на стадии кандидата в релизы)
Обратите внимание, что эти устаревания не происходят на PHP 7.4. Я видел, что вы говорили, что они есть, но это подразумевает, что вы не смогли успешно переключить сайт на PHP 7.4 и он может по-прежнему работать на PHP версии 8.1.
Ответ или решение
Причины Deprecated Ошибок в WordPress и Решения
Если ваш сайт на WordPress генерирует сообщения об ошибках типа "PHP Deprecated", особенно в файлах папки wp-includes, это может вызывать беспокойство. Попробуем разобраться в ситуации и предложить возможные решения.
Что такое Deprecated Ошибки?
Ошибки типа "Deprecated" указывают на то, что определённые функции или методы, которые вы используете, считаются устаревшими и могут быть удалены в будущих версиях PHP. Это не критическая ошибка, но это сигнал о том, что код можно улучшить для обеспечения большей совместимости и производительности.
Ваши сообщения указаны на конкретные проблемы с классами Requests_Cookie_Jar
и Requests_Utility_CaseInsensitiveDictionary
. Это сообщения об устаревании, связанные с неправильным указанием возвращаемых типов методов, которые должны быть совместимы с интерфейсами PHP, такими как ArrayAccess
и IteratorAggregate
.
Причины Высокой Нагрузки на Сервер
Высокая нагрузка на сервер может быть связана с устаревшими функциями, которые требуют больших ресурсов. Часто это происходит из-за того, что старые плагины или темы не оптимизированы для работы с новыми версиями PHP. Использование устаревшего кода может замедлить выполнение запросов, тем самым увеличивая нагрузку на CPU.
Поддерживаемые версии PHP
Обратите внимание на версии PHP, которые вы используете. Ваша текущая версия PHP 7.4 менее подвержена подобным сообщениям об устаревании по сравнению с PHP 8.1. Возможно, стоит переключиться обратно на версию PHP 7.4, как временное решение. Более того, WordPress версии 6.1 и ниже действительно могут вызывать повышение числа сообщений об устаревании при работе с PHP 8.1.
Устранение Deprecated Ошибок
-
Проверка и Смена PHP: Убедитесь, что вы используете корректную версию PHP. Если вернуться на PHP 7.4 не удается, убедитесь, что вы не используете старые плагины или темы, вызывающие конфликты.
-
Обновление WordPress: Рассмотрите возможность обновления до версии WordPress 6.2 и выше, которая включает улучшенную поддержку PHP 8.1. В новых версиях библиотеки Requests будет обеспечена совместимость с последними стандартами PHP.
-
Проверка Плагинов: Выполните аудит используемых вами плагинов. Возможно, некоторые из них устарели или не поддерживаются. Отключите их по одному и проверьте, устраняется ли ошибка.
-
Разработка Темы: Если вы разрабатываете свою тему, убедитесь, что она соответствует современным стандартам PHP и включает корректные аннотации типов возвращаемых значений.
Понятие "Cookie Jar"
"Cookie Jar" в контексте WordPress – это объект, который управляет HTTP-кookies. Он используется для хранения и манипулирования кookies в приложении. Ваша ошибка в Requests_Cookie_Jar
указывает на методы, которые не соответствуют современным стандартам PHP, что и вызывает предупреждения об устаревании.
Заключение
Ваша проблема с Deprecated ошибками на сайте WordPress может быть решена путем проверки и обновления используемой версии PHP, а также путем выполнения обновлений для WordPress и плагинов. Не забывайте о том, что поддержка актуальных версий программного обеспечения важна не только для уменьшения числа ошибок, но и для повышения общей безопасности вашего сайта.
Если у вас возникли сложные проблемы, выйдите на связь с поддержкой WordPress или вашим хостинг-провайдером для получения помощи, чтобы минимизировать влияние этих ошибок на производительность вашего сайта.