Почему Fishpig запрашивает разрешение на запись в wp-includes / i10n.php? - PullRequest
0 голосов
/ 05 июля 2018

Я обновляю Fishpig Wordpress-Integration до версии 4.5.1.5 (с аддонами ACF, CPT, CS, Root, Multisite) в новом ansible-развертывании. Теперь я получаю следующую ошибку в Magento-Backend:

Permissions     The following file must be writable: /path/to/magento/wp/wp-includes/l10n.php

Почему у magento-модуля должны быть права на запись в файл wordpress-core?

Мы предпочитаем иметь разные проблемы, чтобы wp-core-файлы не могли быть скомпрометированы ничем с magento-side.

Вопросы:

  • для какой задачи в Fishpig (или ее аддонах) будет использовано это разрешение на запись?
  • Может ли _validateL10nPermissions() быть перезаписан, чтобы не проверять этот файл без потери важной функциональности в Fishpig?

Было бы здорово получить разъяснения по этому вопросу.

1 Ответ

0 голосов
/ 09 июля 2018

Этот файл необходимо изменить, потому что и Magento, и WordPress имеют функцию PHP с одинаковым именем, в частности, функцию перевода:

function __($args);

Невозможно иметь несколько функций в PHP с одним и тем же именем. Единственный способ включить базу кода WP в Magento и сделать ее доступной - остановить Magento или WordPress от определения этой функции. Модуль решает изменить файл WP вместо файла Magento.

Модификация делает его простым. Он просто оборачивает определение функции в WordPress вызовом function_exists. Это проверяет, была ли функция уже определена (т. Е. В Magento), и если она имеет, она не определяет ее снова Если он не был определен, он определяет его.

if (!function_exists('__')) {
  function __($args);
}

Это позволяет WordPress работать самостоятельно и при включении в код Magento. Без этой модификации невозможно использовать Magento и WordPress вместе.

Разрешения на запись требуются только в том случае, если файл не содержит изменения. Если файл уже содержит модификацию, разрешения на запись не требуются. Если вы не хотите давать разрешения на запись на своем работающем сервере, сделайте так, чтобы изменение файла происходило либо на сервере dev / staging, либо внесите изменение файла самостоятельно, как часть процесса развертывания.

...