E_COMPILE_ERROR compilation lors de l'activation Magento
-
16-10-2019 - |
Question
Je suis en train de permettre la compilation sur Magento via le panneau de contrôle et en compilation est activée la page principale ne parvient pas à afficher correctement et je trouve que index.php a soulevé à plusieurs reprises l'erreur suivante dans les journaux:
E_COMPILE_ERROR: require_once(): Failed opening required 'ConfigFileManagerModel.php' (include_path='/var/www/vhosts/<domain_name_redacted>/httpdocs/includes/src:.:')
Le retour du site à la normale immédiatement après la désactivation de la compilation, mais je voudrais vraiment avoir les avantages de performance. Quelqu'un sait comment résoudre ce problème?
La solution
On dirait un de vos extensions, ou un code personnalisé dans votre système, est incompatible avec le mode de compilation de Magento. La solution exacte varie en fonction de votre système PHP. Voici une explication du problème et des conseils de dépannage qui devraient vous aider.
A fichier dans votre système contient une ligne qui ressemble à quelque chose comme ceci
//the string 'ConfigFileManager-Model.php' may be
//a constant or variable as well
require_once 'ConfigFileManager-Model.php';
Le fichier ConfigFileManager-Model.php
ne fait pas partie de Magento, ou tout colis distribué publiquement en ce que je peux dire .
On dirait que quand vous utilisez en mode « non compilé », Magento peut trouver ce fichier sans problème. Cela signifie qu'il est quelque part dans la Magento normale comprennent des chemins
/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
Cependant, quand fonctionne Magento en mode compilé, les chemins core
, local
et piscine code community
ne sont pas ajoutés comme inclure les chemins. Seul le dossier
/path/to/magento/includes/src
est ajouté en tant que chemin d'inclusion. De plus, ce mode de compilation fait est une copie de marque de tous les fichiers de classe et les gouttes dans le dossier includes/src
. Cela signifie pas propre dossier d'origine du fichier est plus dans le chemin d'inclusion. De ce fait, lorsque Magento exécute le code de require
en mode de compilation, il ne peut pas trouver le fichier ConfigFileManager-Model.php
et échoue.
La meilleure chose à faire serait recoder le module et / ou du code personnalisé tel que la fonctionnalité de ConfigFileManager-Model.php
est incorporée dans une norme aide Magento de classe modèle.
Le moins bon, mais plus rapide chose serait d'identifier tous les lieux ConfigFileManager-Model.php
est required
et changer le chemin il est donc absolu au lieu de parent.