У меня есть сайт WordPress, запущенный на хосте GoDaddy Linux. Ошибка PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/class-wp.php on line 529
, происходит случайным образом, как правило, в ответ на запрос POST.
Строка 529 файла wp-includes/class-wp.php
является телом следующей функции в классе WP:
function init() { wp_get_current_user(); }
Похоже, что ошибка связана с наличием плагина WooCommerce . Я не видел ошибку, когда плагин отключен.
К сожалению, удаление WooCommerce не является вариантом, поэтому мне нужно выяснить, как срабатывает ошибка и обеспечить решение. Проблема в том, что я не знаю, что искать.
Я хочу понять, что вызывает ошибку, подобную приведенной выше в общем случае.
Я надеюсь, что смогу использовать эту информацию, чтобы найти аналогичную проблему в исходном коде WooCommerce.
Я быстро взглянул на исходный код интерпретатора PHP ( здесь и здесь ) и нашел строку, которая генерирует сообщение об ошибке, но, честно говоря, это не помогло мне.
Вопрос в SO о той же ошибке в другом приложении имеет ответ, указывающий на то, что проблема вызвана перегрузкой сервера. Я не думаю, что это так. Мы не получаем слишком много трафика.
Другой вопрос в WordPress SE предлагает две возможные причины. Либо проблема связана с альтернативным PHP-кэшем (APC), либо проблема вызвана плагином. К сожалению, никто не предлагает реальных решений или конкретных причин.
Мой случай похож на тот, который представлен в вопросе выше: у меня включен APC (в настоящее время мы пытаемся получить помощь от GoDaddy, чтобы отключить его), и мои тесты предполагают, что WooCommerce несет определенную ответственность.
Я ценю вашу помощь.
Перейдите в корневой каталог и создайте файл php.ini и напишите следующее: extension = apc.so
и сохранить.
Тема Тема WordPress имела эту проблему.
Я смог решить это для отдельных сайтов, добавив php_flag apc.cache_by_default Off в .htaccess
Мы обнаружили, что это связано с модулем APC для Apache. Чтобы решить эту проблему, просто отредактируйте php.ini, чтобы раскомментировать модуль apc, чтобы он читал
extension=apc.so
в
;extension=apc.so
Это решит проблему.
Некоторое время у меня был белый экран смерти. До этого связана проблема -PHP Неустранимая ошибка: нельзя перегружать функцию для не-объекта в wp-includes / class-wp.php в строке 529. Эта проблема была решена путем обновления моей учетной записи godaddy.
Как упоминалось выше, проблема с белым экраном может быть либо плагином, либо APC. Самый быстрый способ определить, является ли это плагином, – НЕ деактивировать их все, а затем повторно активировать один за другим, а скорее деактивировать и повторно активировать все сразу – плагин вызывает проблему с возвратом ошибки.
Тем не менее, я хотел сохранить плагин, поэтому я связался с Godaddy, который легко отключил APC.
Я активировал плагин, и все кажется прекрасным. Единственная потенциальная проблема с отключением APC – это более медленное время загрузки, но пока этого не произошло.