E ОШИБКА КОМПИЛЯЦИИ при включении компиляции Magento
Я пытаюсь включить компиляцию в Magento через панель управления, и пока включена компиляция, главная страница не отображается должным образом, и я нахожу, что index.php неоднократно вызывал следующую ошибку в журналах:
E_COMPILE_ERROR: require_once(): Failed opening required 'ConfigFileManagerModel.php' (include_path='/var/www/vhosts/<domain_name_redacted>/httpdocs/includes/src:.:')
Сайт возвращается в нормальное состояние сразу после отключения компиляции, но мне бы очень хотелось получить преимущества в производительности. Кто-нибудь знает, как это исправить?
1 answers
Похоже, что одно из ваших расширений или какой-то пользовательский код в вашей системе несовместим с режимом компиляции Magento. Точное решение будет варьироваться в зависимости от вашей системы PHP. Вот объяснение проблемы и несколько советов по устранению неполадок, которые должны вам помочь.
Файл в вашей системе содержит строку, которая выглядит примерно так
//the string 'ConfigFileManager-Model.php' may be
//a constant or variable as well
require_once 'ConfigFileManager-Model.php';
Файл ConfigFileManager-Model.php
не является частью Magento или какого-либо общедоступного пакета, насколько я могу судить.
Похоже, что когда вы работаете в "некомпилированном режиме", Magento может найти этот файл без проблем. Это означает, что он находится где-то в обычных путях включения Magento
/path/to/magento/app/code/core/ConfigFileManager-Model.php
/path/to/magento/app/code/community/ConfigFileManager-Model.php
/path/to/magento/app/code/local/ConfigFileManager-Model.php
/path/to/magento/path/to/calling/files/own/folder/ConfigFileManager-Model.php
#possibly more, depending on your system's default include path
Однако, когда Magento запускается в скомпилированном режиме, core
, local
, и community
пути пула кода не добавляются как включающие пути. Только папка
/path/to/magento/includes/src
Добавляется в качестве пути включения. Кроме того, режим компиляции делает копии всех файлов классов и помещает их в includes/src
папка. Это означает, что собственная исходная папка файла больше не находится в пути включения. Из-за этого, когда Magento запускает код require
в режиме компиляции, он не может найти файл ConfigFileManager-Model.php
и терпит неудачу.
Лучше всего было бы перекодировать модуль и/или пользовательский код таким образом, чтобы функциональность ConfigFileManager-Model.php
была включена в стандартный помощник Magento класса model.
Менее хорошей, но более быстрой вещью было бы идентифицировать все места ConfigFileManager-Model.php
required
и изменить путь так, чтобы это абсолютное, а не относительное.