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 variable “eaccelerator.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
En el código bash dónde buscas la cadena con cat y grep…. ¿no es más sencillo usar solo grep directamente?
Algo así:
grep eaccelerator.shm_max /usr/local/lib/php.ini
Venga, un saludico
Pues si, mucho mejor y más rápida tu solución @_Lk2. Me la apunto para utilizarla en próximos post 😉