Bienvenidos a este Blog

Bienvenidos a este blog dirigido a todos aquellos docentes interesados en utilizar cada vez más y mejor las TIC dentro de su aula.
Se trata de un blog con una clara vocación de divulgación técnica y su objetivo es facilitar a los formadores el acceso a los recursos informáticos existentes hoy en día.

jueves, 11 de octubre de 2012

Ajustes de PHP en Moodle 2.x

Uno de los problemas más habituales con los que se enfrenta quien aborda la instalación de Moodle es la correcta configuración o parametrización de PHP, lenguaje de script con el que está construido. Muchos problemas de ejecución de Moodle tienen que ver con una incorrecta configuración de este elemento. En este artículo intentaremos dar un repaso a los parámetros que habitualmente debe ser tenidos en cuenta a la hora de abordar la solución de algunos problemas muy habituales.

En primer lugar hemos de recordar que desde la versión Moodle 2.1 se requiere utilizar obligatoriamente PHP 5.3.2 o superior; utilizar cualquier versión anterior de PHP garantiza los problemas.

En segundo lugar hemos de recordar que la configuración de PHP se realiza en el archivo php.ini, si bien en instalaciones realizadas sobre hostings compartidos o sobre VPS construidos a partir de consolas como Parallels o Cpanel, el panel dispone de una utilidad gráfica donde modificar los parámetros de PHP sin necesidad de buscar y editar manualmente el archivo php.ini. Si tiene dudas al respecto, consulte con su proveedor de hosting que le deberá asesorar a respecto.

En tercer lugar, recordaremos que para consultar la configuración actual de PHP desde Moodle con el usuario admin puede hacerlo desde
Administración del sitioServidorInformación PHP

Veamos ahora los parámetros que debemos tener en cuenta partiendo de tres de los problemas más habituales que aparecen en los foros de Moodle:

El primer problema que comentaremos es aquel que se produce cuando eterminadas operaciones dan un error del tipo

Fatal error: Allowed memory size of xxxxxxxxxx exhausted (tried to allocate yyyyyyyyyy) in abcd.php on line n

Este error nos informa que la memoria asignada para la ejecución del script php se ha agotado y que precisa de una ampliación.

El valor por omisión en PHP 5.3.2 es de 128M que deberemos ampliar modificando el valor de la directiva
memory_limit =
Este parámetro establece el máximo de memoria que un script puede consumir. Poner este límite evita que scripts mal programados consuman toda la memoria disponible en el servidor. Cojamos el valor recomendado por el error (¡ojo, está en bytes) y ajustémoslo ligeramente al alza.


Un segundo problema habitual es “la pantalla blanca” que aparece en determinadas operaciones como búsquedas, elaboración de informes, ejecución de copias de seguridad u otras operaciones que llevan un cierto tiempo de proceso. Esta “pantalla blanca” se produce cuando la ejecución de un script lleva más tiempo que el definido en la directiva de PHP 
 max_execution_time =
Este valor establece el tiempo máximo en segundos que se permite ejecutar el script (30 por omisión), de manera que si este tiempo se excede, el script se detiene (de ahí que la salida sea una página en blanco). Es otra medida de seguridad para prevenir que un script mal diseñado bloquee el servidor.

Relacionado con este problema está también la directiva
max_input_time =
que determina el tiempo (también 30 por omisión) que un script puede estar cargando datos (por ejemplo, de la lectura de una base de datos). Si el tiempo se excede, el script se detiene.

Si tiene problemas de “pantalla blanca”, vaya subiendo estos valores hasta que se solucionen; para instalaciones grandes, no es extraño encontrarse con valores de 150 o de incluso 300 segundos, valor máximo permitido por la directiva Timeout de Apache. No hace falta decir que valores más altos no sirven de nada ya que será el servidor Apache el que finalice el proceso, salvo que queramos cambiar la configuración de Apache, asunto que queda fuera del objetivo de este artículo.


El tercer y último problema que veremos se refiere al tamaño de los archivos que se pueden subir al servidor. Independiente de cómo Moodle configura este aspecto y los posibles límites que se pongan a nivel de actividad y a nivel de curso, estos nunca podrán superar los valores establecidos a nivel de sitio, que a su vez no puede superar la directiva PHP
upload_max_filesize =
que por omisión esta establecida en valores muy bajos (2M).

Para operar correctamente en Moodle conviene establecer la directiva de PHP y el valor máximo del tamaño de archivos en valores relativamente altos (128M, 256M,...) dependiendo del tamaño de nuestros archivos de copia de seguridad, que suelen ser los archivos de mayor tamaño que habitualmente manejamos. Para limitar a los usuarios deberemos utilizar los valores internos de Moodle a nivel de curso y a nivel de actividad.

Hay una última directiva a tener en cuenta
post_max_size =
Esta directiva el tamaño máximo de “datos post” permitidos (8M, por omisión); los “datos post” tienen que ver con los tipos de tratamiento interno que hace php de la información y, la verdad, los que no somos programadores no necesitamos saber más al respecto. Nos basta con saber que esta directiva también afecta a la subida de archivos y que para poder subir ficheros grandes, este valor de ser mayor o igual que upload_max_filesize.


Del resto de las directivas de PHP, mi recomendación, para quien utilice Moodle, es no tocarlas, si no sabemos muy bien qué hacemos y porqué lo hacemos.