La cantidad de memoria que puede utilizar php para ejecutar los scripts viene determinada directaemente en la configuración de servidor. El problema viene cuanto tenemos varios dominios, y por el motivo que sea necesitamos ampliar el límite de memoria únicamente en uno de ellos.
Posiblemente en nuestro día a día tengamos que lidiar con ciertos errores a la hora de programar en php, pero uno de los relevantes va a ser el límite de memoria, que va a depender del tipo de programación que estemos usando y de lo optimizado que esté nuestro script. Si estamos utilizando scripts o sistemas de gestión ya creados como Joomla o WordPress, seguro que en algún momento nos toparemos con un problema similar a este:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in /var/www/file.php on line 153
Para poder solucionarlo sin tener que variar la configuración de php, y afectando únicamente al dominio en concreto que nos está dando el problema lo más seguro es que con aumentar la memoria eliminemos el problema, y para ello va a ser tan sencillo como seguir estos pasos para editar el archivo .htaccess.
Vamos a tener en cuenta que para editar el archivo htaccess vamos a necesitar o acceso ssh a nuestro servidor, o al menos poder ver los archivos de sistema desde el ftp, esto depende de la configuración de nuestro proveedor de hosting. Si no podéis ver el archivo, será necesario que os pongais en contacto con el. De momento vamos a suponer que tenemos acceso ssh y que también podemos verlo por ftp, y explico a continuación las dos formas.
Si creamos un archivo por ejemplo info.php y dentro colocamos lo siguiente
<?php echo phpinfo(); ?>
Al acceder a él con el navegador veremos todos los detalles de nuestro php, y veremos una línea como la siguiente (pero con los megas que tengas asignados)
Como aumentar la memoria de php con ssh
- Abriremos nuestro ssh
Ya bien con putty u otro programa de ssh que utilicemos normalmente, accederemos a nuestro servidor con el usuario y la contraseña. Una vez dentro iremos a la carpeta root de nuestra página, en este caso /var/www. - Editaremos el archivo htaccess
Para poder editar el archivo, podemos utilizar cualquier editor de consola como vi, nano o el que os parezca más cómodo, yo prefiero nano que es el más básico, ejecutaremosnano .htaccess
- Añadiremos la línea de modificación de límite de memoria
Iremos al principio del archivo en caso de que tenga más contenido y crearemos un salto de línea con intro. Nos pondremos en la primera línea que ahora estará vacía por que la hemos insertado e introduciremos el siguiente códigophp_value memory_limit 256M
- Guardamos el archivo y salimos
Ahora haremos ctrl+x y cuando nos pregunte que si queremos sobreescribir el archivo le daremos a y o s dependiendo del idioma de nuestro sistema.
Como aumentar la memoria de php por ftp
Los pasos son bastante similares a los anteriores a diferencia del editor y de la forma de acceder a los archivos.
- Abriremos el ftp
Con nuestro programa habitual de ftp como por ejemplo winscp (muy potente y gratuíto), entraremos en nuestro servidor y nos iremos al root de la web /var/www. - Descargaremos el archivo .htaccess
Como estamos por ftp no vamos a poder editar directamente el archivo, con lo que lo descargaremos a la carpeta que mejor nos venga. - Editamos el archivo
Abriremos el bloc de notas y con el abriremos para editar el htaccess. Insertaremos la siguiente línea al principio del archivo (con salto de línea después ya que solo puede haber un comando por línea)php_value memory_limit 256M
y le daremos a guardar.
- Subimos de nuevo el archivo
Ahora que ya está editado, solo nos queda volver a subir el archivo y sobreescribir el que ya teníamos.
Nota, si lo hacemos por ftp puede ser que el archivo .htaccess no exista, si es así, podemos proceder a abrir el bloc de notas directamente, poner la línea del paso 3 y darle a guardar como, seleccionar todos los archivos y como nombre de archivo poner «.htaccess» con las comillas incluídas, ya que sino no nos va a dejar guardarlo con este nombre.
Ahora si entramos al archivo de configuración de php deberíamos ver algo así
Con esto deberíamos dejar de tener el problema de falta de memoria. En caso de que no sea suficiente o sea demasiada simplemente deberemos cambiar 256M por la cantidad de megas que queramos permitirle usar a php. No debemos emocionarnos y ponerle una cantidad exageradamente desproporcionada, ya que sino se va a saturar el servidor y no nos va a dejar memoria para el resto de aplicaciones como apache, mysql y lo que estemos usando.