Je fais face au problème le plus étrange jamais rencontré dans magento. nous utilisons la version 1.9.0.
depuis 2 mois, notre site en direct est "vierge" ou "continue de charger" pour les navigateurs utilisés. Signifie dans ce navigateur que nous avons visité le site de nombreuses fois.
dans certains navigateurs, cela fonctionne bien. dans certains montrant vide.
mais le backend fonctionne bien dans tous les navigateurs.
nous sommes confrontés à des problèmes dans Chrome, Mozilla, Opera et tous les autres navigateurs.
1) Si nous effaçons l'historique du navigateur [cache et cookies], son fonctionnement.
2) Si nous ouvrons le même site en fenêtre privée, son fonctionnement.
3) Si nous ouvrons le site dans des navigateurs fraîchement installés, cela fonctionnera pendant un certain temps. à nouveau vide après avoir utilisé le site.
4) Si nous effaçons le dossier var / session, cela commencera à fonctionner pour tous les navigateurs pendant un certain temps. nouveau site vierge.
5) parfois, le site continuera de se charger et ne se chargera jamais ....
J'ai vérifié system.log & exception.log . mais il semble qu'il n'y ait aucune erreur liée à cela. nous utilisons https pour les pages sécurisées . même nous avons l' application Andriod en direct pour ce site. parfois nous obtiendrons des erreurs fatales:
**Fatal error**: Allowed memory size of 536870912 bytes exhausted (tried to allocate 85 bytes) in /lib/Zend/Db/Statement/Pdo.php or lib/Varien/Object.php or /lib/Varien/Db/Select.php or app/code/core/Mage/Core/Model/Config.php
nous définissons memory_limit = 1512 Mo dans php.ini
dans .htaccess, nous avons les fichiers suivants.
php_value memory_limit 1512M php_value max_execution_time 18000
nous avons commenté ceci:
ini_set('display_errors', 1);
mais aucune erreur d'affichage en frontend. Ceci est le journal des erreurs apache :
signal de sortie du pid enfant 23845 Défaut de segmentation (11), coredump possible dans / etc / apache2
Vraiment du mal à résoudre ce problème. Ce problème est-il lié à notre code ou est-ce lié au côté serveur?
est le cookie du navigateur est le principal problème? Si oui, que devez-vous faire pour résoudre ce problème de cookie pour tous les navigateurs. pourquoi son a commencé à fonctionner une fois que nous avons effacé le dossier de session?
nous sommes confrontés à ces problèmes lors de la navigation sur notre site.
Réponses:
Activez d'abord le mode développeur dans votre
.htaccess
fichier, ajoutez ce qui suit à la fin du fichier:SetEnv MAGE_IS_DEVELOPER_MODE "true"
Modifier suivant
index.php
et décommentez la ligne:#ini_set('display_errors', 1);
Ligne référencée:
Ensuite, connectez-vous via SSH et recherchez un fichier de vidage de mémoire sous
/tmp
comme l'erreur de défaut de segment mentionnée. Parfois , il peut aussi être à la racine/
ou dans le répertoire racine du site lui - même , par exemple:/var/www/html/videomergerapp/
.Si vous ne parvenez pas à localiser de fichiers de vidage de mémoire, vous souhaiterez peut-être ajouter des directives supplémentaires à PHP / Apache.
Jetez un œil ici:
Une fois que vous avez le ou les fichiers de vidage principaux, vous pouvez utiliser
gdb
(si--enable-debug
) a été utilisé lors de la configuration de PHP. Vous pouvez effectuer cette détermination en émettant ce qui suit à partir de la ligne de commande:php -i | grep debug
ou simplement créer un fichier de script php dans la racine de votre serveur Web avec:<?php phpinfo(); ?>
dans son contenu et afficher le fichier via un navigateur Web pour voir les valeurs de configuration PHP.S'il n'était pas activé, vous ne pourrez pas obtenir une trace complète dans PHP lui-même, mais uniquement des appels système de niveau supérieur et / ou une trace arrière Apache:
Si vous avez accès au fichier de vidage principal, émettre quelque chose comme ce qui suit vous donnera une trace pour vous aider à trouver le point de défaillance:
gdb /usr/local/apache2/bin/httpd /tmp/core.2027
Si vous rencontrez uniquement des problèmes aléatoires sur le frontend et jamais sur le backend, la plupart des signes indiquent un problème possible avec le codage de votre modèle. Une fois que vous rencontrez les pages vierges (et / ou les erreurs s'affichent si vous avez activé le mode développeur et l'affichage des erreurs). Connectez-vous à votre administrateur et désactivez tous les caches et videz tous les caches et les mémoires de cache.
Ensuite, entrez
app/etc/local.xml
et définissez les modules locaux désactivés sur true.<disable_local_modules>true</disable_local_modules>
Cela désactivera le chargeur automatique de charger les modules dans
app/code/local
.Pour désactiver les modules de communauté, il est plus facile de parcourir chacun de vos fichiers de définition de modules trouvés dans
app/etc/modules
et de désactiver en définissant le nœud actif sur false comme suit:<active>false</active>
De cette façon, vous pouvez aider à exclure si un module tiers est à l'origine de la source du problème par processus d'élimination. REMARQUE: vous ne pouvez pas
disable_local_modules
passer simplement par tous vos modules NON-CORE (tout ce que Mage_ * ignore!).S'il y a toujours des problèmes, j'essaierais temporairement un package de modèle par défaut en allant dans Système> Conception et en définissant une nouvelle conception de quelque chose comme par défaut ou base. Si les packages de modèles de stock fonctionnent, vous saurez que la cause de l'erreur réside dans vos fichiers de conception de modèles (.phtml).
Beaucoup de modèles que j'ai rencontrés sont mauvais à utiliser
Mage::getModel()->load()
dans les boucles foreach car c'est une mauvaise pratique et peut finalement consommer de grandes quantités de mémoire et de ressources du serveur.Magento possède un outil d'analyse de code qui peut aider à analyser vos fichiers de modèle pour déterminer s'il existe l'un de ces mauvais morceaux de code:
Lectures complémentaires:
En outre, il peut être utile pour tout le monde de définir le cache et le stockage de session que vous utilisez
app/etc/local.xml
.J'espère que cela t'aides!
la source
Je suppose qu'il y a une récursivité dans votre code. Modifiez le fichier
lib/Varien/Db/Adapter/Pdo/Mysql.php
et définissez$_debug
et$_logCallStack
sur true. Cela devrait enregistrer la pile d'appels dans levar/debug/pdo_mysql.log
fichier, ce qui devrait vous donner une idée s'il y a une récursivité dans votre code alors qu'il faut une éternité pour le charger. Notez que ce fichier continuera de croître très rapidement, donc idéalement, activez-le lorsque vous pensez que le problème a commencé sur le site.Une autre façon consiste à désactiver les modules / extensions buggy qui, selon vous, pourraient provoquer cela. Cela pourrait aussi être votre simple extension de prix configurable, essayez de la désactiver temporairement et voyez si cela aide à prévenir le problème.
la source
$_debugFile
dans le fichier Mysql.php et assurez-vous que votrevar
répertoire dispose des autorisations appropriées requises pour créer un dossier et un fichier.J'ai eu le même problème dans un site Web client. Vérifiez votre Magento pour les logiciels malveillants.
C'est un scénario bien connu, généralement c'est un walware redirigeant le contenu de la publication de l'utilisateur vers un site Web externe.
Commencez à vérifier index.php, ils le piratent généralement. Faites défiler le code jusqu'à la fin, vérifiez également à droite et entre les lignes commentées dans l'en-tête de licence. Les pirates sont utilisés pour masquer le code de cette façon.
Vous avez le "chargement permanent" car il essaie de contacter les sites Web bloqués par votre FAI.
Il devrait être assez facile de trouver le malware, de rechercher les chaînes "base64", "eval", "mcrypt".
la source
J'ai rencontré un comportement similaire sur un Magento qui avait deux sites Web. Le site se chargeait bien pendant quelques pages, puis se chargeait pour toujours.
La configuration des URL de base était incorrecte. Le paramètre URL de base sécurisée a été défini sur le mauvais site Web tandis que l'URL de base non sécurisée a été définie correctement.
Donc, pour résoudre ce problème si l'administrateur ne fonctionne même pas correctement, les valeurs doivent être modifiées dans la table core_config_data pour le bon site Web, c'est-à-dire définir la bonne URL avec le "http: //" et une barre oblique de fin dans le champ de valeur correspondant à le chemin "web / unsecure / base_url" et "web / secure / base_url" pour le bon scope_id représentant l'ID du site Web.
Notez que l'URL sécurisée est http uniquement parce qu'il s'agissait d'un site Web de démonstration.
la source