1. Code
  2. PHP
  3. PHP Scripts

¿En dónde está php.ini? el archivo de configuración de PHP

En este tutorial vamos a discutir acerca de php.ini — el archivo de configuración principal en PHP. Tomando la perspectiva de un principiante, discutiremos para qué sirve, en dónde encontrarlo y un par de configuraciones importantes que proporciona.
Scroll to top

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En este tutorial vamos a discutir acerca de php.ini — el archivo de configuración principal en PHP. Tomando la perspectiva de un principiante, discutiremos para qué sirve, en dónde encontrarlo y un par de configuraciones importantes que proporciona.

¿Qué es php.ini?

No importa si eres un principiante o un desarrollador experimentado en PHP, tengo la certeza de que has escuchado sobre php.ini: el archivo de configuración más importante en PHP.

Cuando se ejecuta PHP, este busca el archivo php.ini en algunas ubicaciones específicas y lo carga. Este archivo te permite ajustar algunas configuraciones importantes que debes tener en cuenta. Muy a menudo necesitarás ajustar las configuraciones en el archivo php.ini.

Por otro lado, ciertamente es posible que nunca hayas tenido la necesidad de modificar php.ini. PHP puede ejecutarse correctamente con las configuraciones proporcionadas en el archivo php.ini predeterminado, ya que PHP se entrega con estas configuraciones predeterminadas recomendadas. De hecho, no hay parámetros de configuración críticos que debas establecer para ejecutar PHP.

Sin embargo, el archivo php.ini proporciona un par de configuraciones importantes con las que deberías familiarizarte. De hecho, como desarrollador PHP esto es inevitable y tarde o temprano te encontrarás con ello.

¿En dónde está php.ini?

En esta sección veremos cómo encontrar el archivo php.ini que se carga cuando ejecutas la secuencia de comandos de PHP. Esto puede ser complicado — la ubicación del archivo php.ini varía enormemente según el entorno en el que estés ejecutando PHP. Si estás ejecutando Windows, es probable que encuentres el archivo php.ini dentro del directorio de tu instalación de PHP en la unidad del sistema. Por otro lado, si estás ejecutando otro sistema operativo es difícil estimar la ubicación exacta del archivo php.ini — existen varias posibilidades.

Aquí es donde la función phpinfo() viene al rescate. Esta te dirá en dónde se localiza el archivo php.ini y también mostrará toda la información importante en cuanto a la configuración de PHP.

Puedes ejecutar phpinfo() creando un archivo .php y llamando a esa función. Continúa y crea el archivo phpinfo.php con el siguiente contenido y colócalo en la raíz de tus documentos:

1
<?php
2
phpinfo();
3
?>

Carga este archivo en tu navegador y así deberías poder ver la salida de phpinfo(). Busca la siguiente sección.

LocationLocationLocation

Como puedes ver, existen dos secciones. La primera, Configuration File (php.ini) Path (Ruta del archivo de configuración (php.ini)), indica la ruta predeterminada del archivo php.ini en tu sistema. Y la segunda, Loaded Configuration File (Archivo de configuración cargado), es la ruta desde la que se está cargando el archivo php.ini cuando se ejecuta PHP.

Por lo tanto, puedes editar el archivo php.ini indicado en la sección Loaded Configuration File (Archivo de configuración cargado) y eso debería funcionar en la mayoría de los casos. Desde luego, si estás ejecutando PHP como un módulo de Apache, necesitas reiniciar el servidor Apache para asegurarte de que se reflejen los cambios que hayas hecho en el archivo php.ini.

Por otro lado, si estás usando software como WAMP o XAMPP para ejecutar tu pila de desarrollo web, es aún más fácil modificar el archivo php.ini — puedes acceder a él directamente a través de la interfaz de usuario de WAMP o XAMPP.

En la siguiente sección exploraremos un par de configuraciones importantes en el archivo php.ini.

Configuraciones importantes en php.ini

El archivo php.ini proporciona muchas directivas de configuración que te permiten modificar varios comportamientos de PHP. De hecho, al abrir el archivo php.ini es posible que te sientas abrumado por la cantidad de directivas que proporciona. Intentaré agruparlas en base a su comportamiento, y espero que esto sea fácil de comprender para ti.

Desde luego, no revisaremos todas y cada una de las directivas, pero intentaré cubrir las más importantes. Echemos un vistazo a la lista de categorías de las directivas que vamos a discutir.

  • directivas para el manejo de errores
  • directivas para la carga de archivos
  • directivas relacionadas con la seguridad
  • directivas de sesión
  • directivas misceláneas

Directivas para el manejo de errores

En esta sección revisaremos las directivas relacionadas con el manejo de errores y que son útiles para la depuración durante el desarrollo.

display_errors

La directiva display_errors te permite controlar el despliegue de errores en la pantalla durante la ejecución de secuencias de comandos. Puedes configurarla en On si quieres habilitar el despliegue de errores en la pantalla y Off en caso de que quieras desactivarlos. Es importante que nunca habilites esto en un sitio en producción, ya que ralentizará tu sitio y podría dar valiosas pistas a los piratas informáticos con respecto a las vulnerabilidades en la seguridad de tu sitio.

error_reporting

Esta directiva te permite establecer el nivel para el reporte de errores. Principalmente, esta directiva funciona en conjunto con la directiva display_errors. Esta directiva puede aceptar las constantes E_ALLE_NOTICEE_STRICT y E_DEPRECATED.

Puedes configurarla en E_ALL si quieres mostrar todos los tipos de errores, como los errores fatales, advertencias, funciones obsoletas, etc. También puedes combinar los diferentes valores si quieres filtrar errores específicos. Por ejemplo, si quieres mostrar todos los errores menos los avisos, puedes configurarla con E_ALL & ~E_NOTICE.

error_log

En un sitio web en producción debes asegurarte de que PHP no muestre ningún error en el navegador cliente. En vez de eso, puedes registrar errores en algún lugar para que puedas consultarlos posteriormente en caso de que algo salga mal en tu sitio. La directiva error_log te permite establecer el nombre del archivo en donde se registrarán los errores. Necesitas asegurarte de que este archivo tenga permisos de escritura para el usuario del servidor web.

Directivas para la carga de archivos

En esta sección veremos un par de directivas importantes que te permiten habilitar las capacidades de carga de archivos en tus formularios de PHP.

file_uploads

Esta es una directiva booleana que te permite habilitar la carga de archivos HTTP. Si la configuras en On, puedes usar el campo de archivo en tus formularios y los usuarios podrán cargar archivos desde sus computadoras. Por otro lado, si la configuras en Off, la carga de archivos estará deshabilitada por completo.

upload_max_filesize

Si has habilitado la función de carga de archivos en tu sitio web y estás teniendo dificultades para cargar archivos, esta es la directiva que deberías verificar primero. Esta te permite establecer el tamaño máximo de un archivo que puede ser cargado.

Está configurada en 2MB de forma predeterminada y, por lo tanto, los usuarios no pueden cargar archivos de más de 2MB. Puedes ajustar este valor de acuerdo a tus requisitos — a menudo querrás aumentar este límite para permitir cargas de archivos más grandes.

post_max_size

Esta configuración te permite establecer el tamaño máximo de los datos POST en tus formularios. Cuando un usuario envía un formulario con el método POST, el tamaño total de los datos POST no debe exceder el valor que has establecido para esta directiva.

Este valor debe ser mayor al valor que has configurado en la directiva upload_max_filesize, ya que las cargas de archivos se gestionan con solicitudes POST.

Directivas de seguridad

En esta sección veremos algunas directivas importantes relacionadas con la seguridad.

allow_url_fopen

La directiva allow_url_fopen está deshabilitada de forma predeterminada. Pero cuando está habilitada, esta permite la inclusión de archivos remotos en funciones para archivos de PHP. Esto significa que tus archivos PHP pueden incluir código de otros servidores. Ten cuidado al habilitar esto — si tu código está sujeto a un ataque por inyección, la inclusión de archivos remotos hará que el secuestro de tu servidor sea mucho más fácil para un usuario malintencionado.

allow_url_include

La directiva allow_url_include es similar a la directiva allow_url_fopen, pero permite la inclusión de archivos remotos en funciones include. Esta te permite incluir archivos remotos en las funciones includeinclude_oncerequire y require_once.

Si quieres habilitar esta directiva, necesitas asegurarte de haber habilitado la directiva allow_url_fopen también.

Directivas de sesión

La administración de sesiones es uno de los aspectos más importantes cuando estás trabajando con PHP. En esta sección revisaremos un par de directivas de sesión importantes.

session.name

La directiva session.name te permite establecer un nombre para la cookie de la sesión. De forma predeterminada, su nombre está configurado como PHPSESSID, pero puedes cambiarlo a otro valor usando esta directiva.

session.auto_start

Si estableces el valor de la directiva session.auto_start en 1, el módulo de sesión de PHP inicia una sesión automáticamente con cada solicitud y, por lo tanto, no es necesario que uses la función session_start en tus secuencias de comandos.

session.cookie_lifetime

La directiva session.cookie_lifetime te permite establecer la duración de una cookie de sesión. De forma predeterminada está configurada en 0 segundos, y significa que la cookie de la sesión se elimina al cerrar el navegador. Esta es una configuración realmente útil que te permite establecer un tipo de funcionalidad "recuérdame", permitiendo que tus usuarios retomen sus actividades en donde se hayan quedado en tu sitio.

Directivas misceláneas

En esta última sección veremos otro par de directivas que son importantes en el contexto de la ejecución de secuencias de comandos en PHP.

memory_limit

La directiva memory_limit te permite limitar la cantidad máxima de memoria que una secuencia de comandos puede usar.

Debes ajustar esta directiva de acuerdo a tus requisitos, y no debes configurarla en un valor muy alto para evitar interrupciones de memoria en tu servidor — ¡las secuencias de comandos mal escritas o con errores pueden consumir toda la memoria de tu servidor si las dejas!

max_execution_time

La directiva max_execution_time establece la cantidad máxima de tiempo permitida para que una secuencia de comandos se ejecute antes de que sea finalizada. El valor predeterminado es de 30 segundos, y puedes incrementarlo a un límite razonable según tus requisitos si es necesario.

De manera similar a la directiva memory_limit, no debes establecerla en un valor demasiado alto para evitar problemas en tu servidor.

max_input_time

La directiva max_input_time te permite configurar la cantidad máxima de tiempo permitida a una secuencia de comandos para analizar datos entrantes de formularios a partir de un GET o POST.

Si tienes formularios que envían una gran cantidad de datos en tu sitio web, quizá quieras incrementar el valor de esta directiva.

Conclusión

Es imposible cubrir todas y cada una de las directivas en un solo artículo, pero he intentado cubrir las que son importantes. Siéntete libre de publicar tus preguntas si quieres saber acerca de alguna directiva específica, ¡y con gusto te ayudaré!

Como desarrollador PHP, es importante que comprendas las diferentes directivas en el archivo php.ini, y eso debería ayudarte a afinar tus configuraciones de PHP de acuerdo a tus requisitos.

Las mejores secuencias de comandos para PHP en CodeCanyon

Explora miles de las mejores y más útiles secuencias de comandos para PHP alguna vez creadas en CodeCanyon. Con un pago único de bajo costo, puedes comprar estos temas de WordPress de alta calidad y mejorar la experiencia en tu sitio web para ti y tus visitantes.

Estas son algunas de las secuencias de comandos en PHP mejor vendidas y más prometedoras disponibles en CodeCanyon para 2020.