Après une mise à jour vers Magento 1.8 je n’avais plus aucune image de mes produits, même problème avec un Magento 1.8 tout neuf avec une base vierge.
impossible d’insérer une image, message d’erreur : « Memory limit has been reached »
Après pas mal de recherche ±2 jours de perdu (Merci Magento), je me suis rendu compte qu’ils ont ajouté dans Magento 1.8 un test de memory_limit de php dans /magento/lib/varien/image/Adpater/Gd2.php
/** * Converts memory value (e.g. 64M, 129KB) to bytes. * Case insensitive value might be used. * * @param string $memoryValue * @return int */ protected function _convertToByte($memoryValue) { if (stripos($memoryValue, 'M') !== false) { return (int)$memoryValue * 1024 * 1024; } elseif (stripos($memoryValue, 'KB') !== false) { return (int)$memoryValue * 1024; } return (int)$memoryValue;
Problème, ce test est incomplet il ne prend pas en compte les paramétrages en Go « G » ou en illimité -1
Il génère donc une fausse erreur [un bug].
_______________________________________________
SOLUTIONS
Modifier les paramètres de serveur php :
Ne pas utiliser de fonction illimité (-1) ou convertir les (Go) G en M (Mo) dans le fichier php.ini
l’emplacement varie selon les installations /etc/php5/apache2/php.ini
- si la valeur memory_limit = 2G remplacé par 2048M
memory_limit = 2048M
- si la valeur est memory_limit = -1 changez pour par exemple 128M
- Redémarrer le service ou le serveur pour que ce soit pris en compte.
service apache2 stop service apache2 start
- Enfin videz la cache de Magento
rm /magento/var/session; rm /magento/var/cache;
Bizarrement ça ne sert a rien de le faire dans le fichier .htaccess
_______________________________________________
Si vous utilisez une interface PLESK
- Abonnement ► Gérer l’hébergement ► Général Personnaliser ► Paramètre PHP
- memory_limit ► Entrer une valeur personnalisé saisissez 128M
- NE LAISSEZ PAS ILLIMITE ou PAS DE VALEUR EN G (GO)
- Redémarrer le service ou le serveur pour que ce soit pris en compte.
service apache2 stop service apache2 start
- Enfin videz la cache de Magento
rm /magento/var/session; rm /magento/var/cache;
_______________________________________________
Pour tester votre php créez un fichier test.php dans votre dossier magento, puis lancer le de votre navigateur :
test.php contenant :
<?php
- // Affiche toutes les informations, comme le ferait INFO_ALL
- phpinfo();
- // Affiche uniquement le module d’information.
- // phpinfo(8) fournirait les mêmes informations.
- phpinfo(INFO_MODULES);
- ?>