ALERT – script tried to increase memory_limit ~ Que faire ?

Mis à jour le , par Jacky Thierry, dans la catégorie #Développement web

Error code

A propos de l'auteur

Jacky THIERRY

CTO, Project Manager, Startup owner

Travaillant depuis plus de 15 ans dans le digital, j'ai dirigé de nombreux projets pour des grosses companies mondiales, des agences web, et des associations locales. Je suis spécialisé dans le développement agile avec des équipes outsourcées.

  • Jacky Thierry linkedin
  • Jacky Thierry twitter
  • Jacky Thierry instagram
  • Jacky Thierry RSS feed
Jacky Thierry

Hostname suhosin: ALERT - script tried to increase memory_limit to xxx bytes which is above the allowed value (attacker 'ip.du.visiteur', file '/var/www/monsite/index.php', line 1)

Cette erreur que l’on peut voir dans les logs apache provient de PHP et suhosin qui mettent une limite à la mémoire qu’un script peut utiliser. Elle apparaît lorsqu’une application ou un script un peu gourmand demande plus de mémoire qu’autorisé. Par défaut, PHP limite à 128M, et suhosin limite la mémoire à celle utilisée par le script à son lancement.

Pour régler cela, il y a 3 possibilités. La plus simple consiste à augmenter la limite mémoire de PHP, mais cela peut poser des problèmes de performances si on lui attribue trop de mémoire disponible. Le mieux est de limiter la mémoire maximum utilisable dans un htaccess ou directement de l’application concernée.

Augmenter la mémoire dans la configuration PHP

Vérifier tout d’abord la limite dans le fichier de config php grep memory_limit /etc/php5/apache2/php.ini puis l’augmenter si nécessaire de la valeur voulue
/etc/php5/apache2/php.ini

memory_limit = 256M

Et recharger apache /etc/init.s/apache2 reload

Limiter la mémoire dans un .htaccess

Il est possible de rédéfinir la limite de PHP dans le fichier .htacces du site
.htaccess

php_value memory_limit 128M

Limiter la mémoire dans une application

Il est également possible de la redéfinir directement dans l’application, il suffit de rajouter cette ligne php

ini_set('memory_limit', 128M);

Dans le cadre d’un CMS, cette valeur est déjà certainement définie, par exemple dans wordpress ou drupal

WordPress

wp-includes/default-constants.php

define( 'WP_MAX_MEMORY_LIMIT', '128M' );

Drupal

sites/default/settings.php

ini_set('memory_limit', '128M');