• By Nacho
  • 29 de julio de 2024

¿Qué es el fichero php.ini y para qué sirve?

¿Qué es el fichero php.ini y para qué sirve?

¿Qué es el fichero php.ini y para qué sirve? 1024 683 Nacho

Dificultad Baja

El fichero php.ini es una herramienta poderosa que te permite personalizar y optimizar el entorno PHP para tus aplicaciones web. Entender cómo configurarlo adecuadamente puede mejorar significativamente el rendimiento y la seguridad de tus sitios web.

Accede a este archivo a través de tu navegador web. Verás una página con toda la información de configuración de PHP, incluyendo los valores actuales del php.ini.

Si no existe, solo tienes que crearlo, esto es bastante común cuando no lo has utilizado o tu servidor es «nuevo» a nivel de configuración.

¿Qué es el fichero php.ini?

El fichero php.ini es un archivo de configuración utilizado por PHP para establecer las directrices y comportamientos del entorno PHP en tu servidor. Este archivo define cómo PHP debe manejar diversas funciones y características, desde la gestión de errores hasta la carga de extensiones y la configuración de límites de recursos.

Ubicación del php.ini

La ubicación del archivo php.ini puede variar según el sistema operativo y la instalación de PHP. En sistemas basados en Linux, comúnmente se encuentra en /etc/php/8.0/apache2/php.ini o /etc/php/8.0/cli/php.ini. En sistemas Windows, usualmente se encuentra en el directorio de instalación de PHP.

¿Para qué sirve el fichero php.ini?

El fichero php.ini sirve para configurar una amplia variedad de opciones que afectan el comportamiento de PHP. Aquí hay algunas de las configuraciones más importantes que puedes ajustar:

Configuración de Errores

La gestión de errores es crucial para el desarrollo y la depuración. En el php.ini, puedes configurar cómo PHP maneja y muestra los errores.

error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log

error_reporting define qué niveles de error se informarán. display_errors controla si los errores se muestran en la salida estándar. log_errors y error_log configuran el registro de errores en un archivo específico.

Directivas de Recursos

Para evitar que los scripts consuman demasiados recursos, puedes establecer límites en el uso de memoria, el tiempo de ejecución y el tamaño de los archivos cargados.

memory_limit = 128M
max_execution_time = 30
upload_max_filesize = 2M
post_max_size = 8M

memory_limit establece el máximo de memoria que un script puede consumir. max_execution_time define el tiempo máximo de ejecución de un script en segundos. upload_max_filesize y post_max_size configuran los límites de tamaño para archivos cargados y datos enviados a través de formularios.

Configuración de Extensiones

PHP puede ser extendido con módulos adicionales que proporcionan funciones extras. El fichero php.ini permite habilitar y configurar estas extensiones.

extension=curl
extension=mbstring
extension=mysqli

Estas líneas habilitan las extensiones curl, mbstring y mysqli, que son comúnmente utilizadas en aplicaciones web.

Sesiones y Cookies

Las sesiones y las cookies son esenciales para el manejo de la información del usuario. Puedes ajustar cómo PHP maneja estas características en el fichero php.ini.

session.save_path = "/var/lib/php/sessions"
session.cookie_lifetime = 0
session.gc_maxlifetime = 1440

session.save_path define el directorio donde se almacenan las sesiones. session.cookie_lifetime establece la duración de la cookie de sesión. session.gc_maxlifetime define el tiempo de vida en segundos de los datos de sesión almacenados.

Configuración de PHP para Apache

Si estás utilizando el servidor web Apache con PHP, es importante saber cómo interactúa el php.ini con la configuración de Apache.

Configuración de Módulos

Para habilitar PHP en Apache, debes asegurarte de que el módulo PHP esté cargado y configurado correctamente.

LoadModule php_module modules/libphp8.so
AddHandler application/x-httpd-php .php

Estas líneas deben estar presentes en el archivo de configuración de Apache (httpd.conf) para integrar PHP con Apache.

Directivas php.ini en Apache

Algunas configuraciones del php.ini pueden ser sobrescritas directamente en la configuración de Apache usando directivas php_value y php_flag.

<IfModule mod_php8.c>
php_value memory_limit 128M
php_flag display_errors On
</IfModule>

Este bloque de configuración establece el límite de memoria y habilita la visualización de errores para el módulo PHP en Apache.

Comprobación de la Configuración de PHP

Después de hacer cambios en el fichero php.ini, es importante verificar que PHP los ha aplicado correctamente. Puedes hacerlo crea un archivo PHP con el siguiente contenido y llama a la URL de dicho archivo desde el navegador:

<?php
phpinfo();
?>

Medidas de Seguridad que se Pueden Realizar desde el Fichero php.ini

El fichero php.ini es esencial no solo para la configuración general de PHP, sino también para implementar medidas de seguridad que protejan tu aplicación web y el servidor. Aquí te presento algunas configuraciones clave que puedes ajustar para mejorar la seguridad.

Implementar estas medidas de seguridad en el fichero php.ini puede mejorar significativamente la seguridad de tu servidor y aplicaciones PHP. Es crucial revisar y ajustar regularmente estas configuraciones para adaptarse a las mejores prácticas y a las necesidades específicas de tu entorno.

Deshabilitar Funciones Peligrosas

PHP tiene algunas funciones que, si no se usan correctamente, pueden ser peligrosas. Puedes deshabilitarlas en el fichero php.ini.

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Esta directiva deshabilita las funciones que pueden ser explotadas para ejecutar comandos en el servidor.

Configuración de Display Errors

Mostrar errores en el entorno de producción puede revelar información sensible. Debes desactivar display_errors y registrar los errores en su lugar.

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

Esto asegura que los errores no se muestren al usuario final y que se registren para su revisión por el administrador.

Limitar la Inclusión de Archivos Remotos

Para evitar la inclusión de archivos remotos que puedan comprometer la seguridad de tu aplicación, configura estas directivas:

allow_url_fopen = Off
allow_url_include = Off

Esto impide que los archivos sean incluidos desde URLs remotas, lo que reduce el riesgo de ataques mediante archivos remotos.

Configurar el Tamaño Máximo de Subida de Archivos

Limitar el tamaño de los archivos que se pueden subir ayuda a prevenir ataques de denegación de servicio (DoS) mediante la subida de archivos muy grandes.

upload_max_filesize = 2M
post_max_size = 8M

Estas directivas establecen el tamaño máximo de los archivos que se pueden subir y el tamaño máximo de los datos enviados en una sola solicitud POST.

Habilitar open_basedir

La directiva open_basedir limita los archivos que PHP puede acceder a los especificados, reduciendo el riesgo de que scripts maliciosos accedan a partes sensibles del sistema de archivos.

open_basedir = /var/www/html:/tmp

Esto asegura que PHP solo puede acceder a los directorios especificados y no puede leer o escribir fuera de ellos.

Configurar session.cookie_secure y session.cookie_httponly

Protege las cookies de sesión configurando estas directivas para que solo se envíen a través de conexiones seguras y no estén disponibles para scripts JavaScript.

session.cookie_secure = On
session.cookie_httponly = On

Estas configuraciones ayudan a proteger las cookies de sesión contra ataques de secuestro de sesiones y XSS.

Desactivar expose_php

La directiva expose_php revela la versión de PHP que se está utilizando en las cabeceras HTTP. Desactivarla puede evitar que los atacantes obtengan esta información.

expose_php = Off

Esto elimina la cabecera X-Powered-By en las respuestas HTTP, ocultando la versión de PHP del servidor.

Dejar una Respuesta