Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

sábado, 20 de enero de 2024

Actualizar PHP y su referencia en Apache2

Tras actualizar PHP y tener la nueva versión 8.3 varias cosas dejaron de funcionar y como siempre olvido los pasos a seguir para corregir, mejor lo dejo de referencia para el futuro :P

Si hay una nueva versión de PHP instalada y se estaba usando mysql como motor de base de datos, se debe validar que está instalado el módulo correspondiente a la nueva versión o instalar si hace falta:

sudo apt install php8.3-mysql

Ajustar las versiones de PHP en uso validando que corresponde a la última:

sudo update-alternatives --config php

sudo update-alternatives --config phar

sudo update-alternatives --config phar.phar

NOTA: en caso de tener otros módulos, se debe ejecutar comando sobre ellos igual, ej: phpize, php-config.

Si se quiere hacer el ajuste manualmente se pueden utilizar los comandos a2dismod y a2enmod:

sudo a2dismod php8.2

sudo a2enmod php8.3

En caso de estar usando carpetas de usuario para contenido web, se debe eliminar la restricción en apache:

sudo vi /etc/apache2/mods-enabled/php8.3.conf

Comentando la parte del mod_userdir con #

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Revisar la configuración de php para la versión actual en caso de ajustes realizados en la versión previa:

sudo vi /etc/php/8.3/apache2/php.ini

Para finalizar se debe reiniciar apache:

sudo service apache2 restart
Y listo, ya todo debiera funcionar nuevamente sin problemas :)

Referencia:

https://httpd.apache.org/docs/2.4/howto/public_html.html

https://slaford.com/laravel/how-to-switch-php-versions-on-command-line-ubuntu/ 

domingo, 1 de mayo de 2022

Sesiones en PHP

Luego de crear una sesión con session_start(), lo recomendado es administrar dichas sesiones usando la variable global $_SESSION, agregando ahí un parámetro de tiempo referencial y luego validar si ese tiempo se cumplió o no, por ejemplo:

$_SESSION['fin'] = time() + 30 * 60 // tiempo en segundos plazo 30 minutos * 60 segundos

A pesar de haber configurado el valor y que el tiempo aún no expire, en algunos casos el usuario puede que reciba un término anticipado de la sesión teniendo que volver a ingresar, pero ¿por qué pasa eso? :/

Aparte de las variables de manejo de las sesiones, hay que recordar validar el tiempo del recolector de basura de PHP que va eliminando archivos temporales en el servidor, eso incluye los archivos asociados a sesiones. El tiempo por defecto es de 1440 segundos (24 minutos). Si se manejan sesiones de mayor tiempo se debe ajustar también ese parámetro de lo contrario si no hay actualizaciones el archivo de sesión será eliminado. Para ajustar se debe ir al archivo de configuración de apache "php.ini" y cambiar el valor del parámetro "session.gc_maxlifetime".

Dependiendo de la versioń de PHP es el archivo a configurar, por ejemplo para versión 7.3:

/etc/php/7.3/apache2/php.ini

Luego de ajustar el valor, se debe reiniciar el servicio:

service apache2 restart

o

systemctl restart apache2

No olvidar dejar un tiempo mayor al que se utiliza en el código y ahora sí todo está listo para administrar correctamente esas sesiones :D

Referencias:

https://www.php.net/manual/en/session.configuration.php

https://www.codeleaks.io/increase-session-timeout-in-php/

-