Correction : Bug Magento 1.8 « Memory limit has been reached »

Untitled

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;

plesk-limit

_______________________________________________

Pour tester votre php  créez un fichier test.php  dans votre dossier magento, puis lancer le de votre navigateur :

test.php   contenant :

<?php
  1. // Affiche toutes les informations, comme le ferait INFO_ALL
  2. phpinfo();
  3. // Affiche uniquement le module d’information.
  4. // phpinfo(8) fournirait les mêmes informations.
  5. phpinfo(INFO_MODULES);
  6. ?>
Publicités

Editeur de fichiers (XML, HTML, PHP …) directement dans Magento !

vous devez modifier un fichier html, php, ou XLM de Magento. Vous n’avez pas envie à chaque fois de le télécharger en FTP.

Cette extension est idéal : http://www.magentocommerce.com/magento-connect/file-system.html
http://connect20.magentocommerce.com/community/File_System

 

_______________________________________

Mais attention,  vous avez accès à tous les fichiers, donc la moindre erreur et vous plantez votre Magento.

 

« php -f » vs « php -q »

Ces deux commandes sont  presque identiques :

elles permettent d’exécuter un script php dans un terminal .

Exemples :

php -q /var/www/vhosts/site.fr/httpdocs/magento/shell/log.php clean
ou
php -f /var/www/vhosts/site.fr/httpdocs/magento/shell/log.php clean

Mais il y a une différence :

  • php -f : Exécute la ligne dans le répertoire (dossier) courant

alors que

  • php -q : Exécute la ligne dans le répertoire du script.php

Selon les cas, cette différence est très importante.

voir source : http://php.net/manual/fr/features.commandline.differences.php

Message d’erreur php / tâche cron / php -f .. PHP Deprecated .. line 0 line 1 ..safe_mode’ is deprecated

Lorsque vous lancez une tache cron ou en shell php -f ..   Ce message d’erreur peut apparaître :

1) PHP Deprecated:  Comments starting with ‘#’ are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with ‘#’ are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
2) PHP Warning:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
Log cleaned

____________________________________________

1) Correctif à apporter :

il suffit de changer dans les fichiers consernés le # par un ;

ouvrir avec un éditeur de texte :

/etc/php5/cli/conf.d/imap.ini
/etc/php5/cli/conf.d/mcrypt.ini

____________________________________________

2) Correctif à apporter :

PHP Warning:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0

safe_mode n’est plus utilisé dans php 5.3 et +

Ouvrir le Fichier php.ini dans un éditeur de texte

/etc/php5/cli

chercher : safe_mode = On

remplacé par safe_mode = Off

Puis redemarrer votre service apache

service apache2 stop
service appache2 start

et voila 🙂