Apache error 500: eAccelerator: shmmax should be at least 2MB

Este molesto error aparece en algunos servidores que puedan tener instalados cPanel con eAccelerator. Puede ser que alguna actualización de cPanel cambie valores por defecto del php.ini de PHP y en mi opinión una de las posibles y frecuentes causas de este fallo.

Para solucionarlo, encuentra el php.ini de tu sistema cPanel, normalmente ubicado en /usr/local/lib/php.ini

Se trata de buscar la variableeaccelerator.shm_max” y ponerle un valor mayor o igual a 2 MB. Puedes hacer un filtrado de la cadena para asegurarte que la tienes y con que valor con:

cat /usr/local/lib/php.ini | grep eaccelerator.shm_max

Por ejemplo puede salirte algo como:

eaccelerator.shm_max="0"

Es decir, que usa 0 o el valor por defecto.

Luego si tienes dicha variable puedes cambiarlo con este comando de sed (stream editor) rápidamente:

sudo sed -i 's/eaccelerator.shm_max=\"0\"/eaccelerator.shm_max=\"2M\"/g' /usr/local/lib/php.ini

O bien editar por ejemplo con el editor nano:

nano /usr/local/lib/php.ini

Y poner:

eaccelerator.shm_max="2"

También puedes jugar con la variable eaccelerator.shm_size.

Si te sigue dando problemas eAccelerator otra solución más drástica es desactivarlo, es decir, poner un “;” delante del extension="eaccelerator.so" (puede variar la ruta).

Debes tener en cuenta que el valor por defecto del tamaño de memoria compartida para el kernel 2.6 es de 32 mb.

Puedes cambiar este tamaño al valor deseado en /proc/sys/kernel/shmmax.

Por ejemplo con:

echo VALOR > /proc/sys/kernel/shmmax

O añadir la linea kernel.shmmax=VALOR a /etc/sysctl.conf así no tendrás que establecerlo manualmente cada vez que reinicies.

Por otro lado, si estas usando un VPS, asegúrate de que la memoria compartida y los buffers para sockets en la configuración del VPS son suficientes.

Para OpenVZ o tipos similares, puede comprobarlo con:

cat /proc/user_beancounter

Para un caso normal, el fail count (failcnt) debería ser cero. Si necesitaras más, deberías preguntar a tu proveedor VPS para agrandar el límite hasta que eAccelerator no fallara.

Fuentes

Documentacion eAccelerator: shm_max

Documentacion eAccelerator: shm_size

FAQ eAccelerator