Paneles de control Plesk Problemas Técnicos Programación

Error max_execution_time en PHP o MySQL

Steve Houghton-Burnett Burgundy, France - unsplash.com

Este error se produce cuando el tiempo de ejecución de una orden excede el límite que tiene configurado por defecto nuestro servidor.

Suele aparecer cuando ejecutamos un script muy pesado (o con un condicional lógico mal usado que le haga entrar en Loop), intentamos subir un archivo de muchos megas, o cargamos un backup o base de datos de tamaño considerable.

Hemos de entender que, tanto si el servidor es compartido como si es propio, aquellos trabajos que mantengan el procesador ocupado a carga máxima durante muchos segundos, redundarán en perjuicio de los tiempos de carga de nuestra web, y/o de las webs del resto de clientes alojados en el mismo servidor.

De la misma forma, max_execution_time es una variable de seguridad que no sólo da estabilidad a nuestro sistema, sino que ayuda a prevenir determinados ataques externos como ataques de fuerza bruta.

Teniendo todo esto claro y descartando que, como decíamos, el error aparezca porque nuestro script entra en loop, vamos a aprender a incrementarlo.

 

Cómo incrementar max_execution_time en el Panel de Control

El error nos puede aparecer en dos situaciones muy diversas: Durante la ejecución de una orden en MySQL o bien mientras trabajamos con programas PHP (Como WordPress, por ejemplo).

Si se ha producido en éste último caso, la solución es bastante sencilla, siempre y cuando tengamos permisos suficientes como para realizar lo siguiente:

  1. Accedemos a nuestro panel de control.
    • Si es Plesk/Odín: http://tudominio.com:8443
    • Si es cPanel: http://tudominio.com/cpanel
  2. Nos identificamos y seleccionamos el dominio afectado.
  3. Pulsamos en:
    • Si es Plesk/Odín: Configuración de PHP
    • Si es cPanel: PHP Variables Manager.
  4. Buscamos la variable en cuestión y la incrementamos al valor que consideremos.

 

PHP Variables Manager en cPanel

 

Modificar max_execution_time en el php.ini

Otra manera de conseguir el mismo resultado es a través del archivo php.ini. Este archivo gestiona la configuración de PHP indicando qué variables están activas y el valor asignado a cada una.

Como su ubicación es algo esquiva, podemos localizarlo de dos maneras:

 

Creando un archivo que nos lo diga

  1. Creamos un archivo llamado info.php cuyo contenido sea:
    <?php phpinfo(); ?>
  2. Lo subimos vía FTP y lo ejecutamos.
  3. El resultado será algo como:
    phpinfo
  4. Lo único que debemos hacer es acceder a dicha ruta, buscar la variable e incrementarla.

Buscándolo vía SSH

  1. Accedemos al servidor vía SSH, y ejecutamos el comando de búsqueda:
    find / -iname "php.ini"
  2. Vamos a la url donde nos haya dicho que se encuentra, y lo editamos:
    cd /etc/php5/apache2/php.ini
    
    vi php.ini

TIP DE LOOPEANDO:

En SSH hay muchas formas de editar archivos, pero en este ejemplo usamos «vi«. Con «vi«, cuando editamos un archivo accedemos a él en modo sólo lectura, por lo que si deseamos editarlo hemos de pulsar la tecla «o».

Cuando finalicemos la edición, para guardar y salir hemos de pulsar la tecla «Esc» y escribir:

:wq

 

max_execution_time en phpMyAdmin

Si el error nos ha aparecido cuando trabajábamos en phpMyAdmin, la cosa se complica un poco, ya que dicha variable también se gestiona desde MySQL y es independiente de la de PHP.

Para incrementarla debemos editar el archivo config.default.php a través de SSH. El problema es que ese archivo, habitualmente, no existe. Pero como consuelo MySQL nos deja una plantilla para crearlo.

Comencemos pues:

  1. Buscamos dónde está phpMyAdmin:
    find / -iname "phpmyadmin"
  2. Una vez sepamos dónde está (en CentOS suele ubicarse en:
    /usr/local/psa/admin/htdocs/domains/databases/phpMyAdmin)

    Vemos si existe el archivo config.default.php:

    cd /usr/local/psa/admin/htdocs/domains/databases/phpMyAdmin
    dir
    
  3. En caso de que exista, lo editamos y listo. Si no existiese, sí estará su plantilla: config.sample.inc.php
    En este 2do caso, clonamos la plantilla y la renombramos:

    cp config.sample.inc.php config.inc.php
  4. Y ahora ya sí, editamos el archivo:
    vi config.inc.php
  5. Si no apareciese la variable que buscamos ($cfg[‘ExecTimeLimit’]), la escribimos en un área no comentada:
  6. Guardamos, salimos y reiniciamos el servicio. Para ello pulsamos «Esc» y escribimos:
    :wq

    Y para reiniciar el servicio:

    service mysqld restart

    o bien:

    /etc/init.d/mysqld restart

    O en el caso de que utilicemos mariadb (Linux v.7 en adelante):

    systemctl restart mariadb

     

NOTA: Puede ocurrir que tras haber creado el archivo config.inc.php nos pida identificarnos cada vez que accedemos a una BBDD (cosa que antes no hacía). Pues bien, en ese caso los datos de identificación son los del usuario que hubiésemos creado con privilegios que administrar la BBDD.

Pero como entendemos que es muy molesto tener que identificarnos cada vez, [en este post os explicamos cómo eliminar esa identificación].

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

Escribir comentario

Haz clic aquí para dejar tu comentario