Это форум технической поддержки WPML – плагина для многоязычной WordPress.
Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.
Столкнулся с фатальной ошибкой в WPML при загрузке WordPress, когда сайт запускается через скрипт Installatron (it-api.php) на хостинге Zone.ee.
Сообщение об ошибке из error_log:
[01-Dec-2025 11:03:16 UTC] PHP Fatal error: Uncaught TypeError: in_array(): Argument #2 ($haystack) must be of type array, null given in /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Lst.php:203
Stack trace:
#0 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Lst.php(203): in_array('plugin', NULL, true)
#1 [internal function]: WPML\FP\Lst::WPML\FP\{closure}(Array, NULL)
#2 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/functions.php(154): call_user_func_array(Object(Closure), Array)
#3 [internal function]: WPML\FP\Lst::WPML\FP\{closure}(Array, NULL)
#4 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/collect/src/Illuminate/Support/Traits/Macroable.php(56): call_user_func_array(Object(Closure), Array)
#5 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/classes/plugins/Plugins.php(129): WPML\FP\Lst::__callStatic('includesAll', Array)
#6 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/classes/plugins/Plugins.php(71): WPML\Plugins::stopPluginActivation('wpml-translatio...')
#7 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/sitepress.php(503): WPML\Plugins::loadEmbeddedTM(1)
#8 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-settings.php(545): include_once('/data01/virt818...')
#9 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-config.php(129): require_once('/data01/virt818...')
#10 /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/it-api.php(38): include_once('/data01/virt818...')
#11 {main}
thrown in /data01/virt81820/domeenid/www.enjoythewoodestonia.ee/htdocs/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Lst.php on line 203
Как я понимаю, в `WPML\FP\Lst::includesAll()` второй аргумент для `in_array()` почему-то оказывается `NULL`, и без проверки типа вызывается `in_array('plugin', NULL, true)`, что приводит к TypeError.
Важно:
- Ошибка возникает не при обычном заходе на сайт пользователем, а когда хостинг запускает WordPress через свой служебный файл `it-api.php`.
- `it-api.php` — это скрипт Installatron Worker от хостинга Zone.ee, я его сам не создавал и не изменял. Через него хостинг управляет сайтом (обновления, резервные копии и т.п.).
Вопросы:
1. Является ли эта ошибка вам известной (когда WPML запускается в подобной “нестандартной” среде, как у Installatron Worker)?
2. Есть ли временное решение или фильтр/хук, который можно применить, чтобы `includesAll()` не вызывал `in_array()` с `NULL`?
3. Планируется ли исправление в ближайших обновлениях WPML?
Дополнительная информация от хостинга (Zone.ee):
Я обратился в поддержку хостинга, так как в стеке фигурирует файл it-api.php. Они подтвердили, что файл it-api.php является служебным Installatron Worker’iga seotud skript ning ise loogikat ei sisalda, mis võiks põhjustada in_array() saamise nullina. Nende sõnul:
"Error tuleb WPML plugina failist 'Lst.php' (rida 203). 'it-api.php' ja 'wp-config.php' failid ainult käivitavad või kutsuvad seda koodi, kuid see ei sisalda loogikat, mis põhjustaks 'in_array()' saamise nullina. Null väärtus tuleb tõenäoliselt WPML plugina sisemistest seadistustest või valikutest. Kuna 'it-api.php' käivitab pluginad, ilmub see stack trace'is, kuid viga ise see ei põhjusta. Esmaseks soovituseks oleks pöörduda WPML toe poole."
То есть хостинг считает, что проблема именно в WPML (внутренние настройки/логика), а их скрипт только запускает WordPress и плагины.
Буду благодарен, если вы сможете:
- подсказать временное решение / workaround (например, сброс каких-то настроек или добавление проверки типа через фильтр/хук),
- либо подтвердить, что планируется исправление, чтобы в функции `includesAll()` не вызывался `in_array()` с NULL.
Один из пользователей ранее сообщал о похожей ошибке в среде Installatron — проблема возникала во время обновления плагинов (возможно, с использованием аналогичного скрипта). К сожалению, тот случай так и не был решён.
Данная ошибка нам не знакома, и по причине “нестандартной” среды, у нас нет возможности установить и полноценно тестировать WPML в Installatron.
Если у Вас есть возможность создать тестовый сайт в этой же среде, где можно стабильно воспроизвести ошибку и получить точные данные ошибки в debug.log, я смогу передать информацию нашей команде. Однако не могу гарантировать, что проблема будет исправлена, так как она может быть вызвана особенностями среды Installatron, а не WPML.
Также хочу отметить, что я не знаю, какие именно операции выполняет скрипт при обновлении плагинов, есть только общее понимание. Поэтому я могу дать следующие рекомендации:
- по возможности не использовать данный скрипт и обновлять плагины стандартным способом через WordPress.
- либо найти в скрипте тот участок кода, который вызывает ошибку, и временно закомментировать его (я так понимаю что у Вас не доступа к изменению скрипта).
- возможно, лучшим вариантом будет использовать обновления вручную или через стандартный WordPress механизм.