"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo habilitar/deshabilitar funciones nativas de PHP – Tutorial php.ini

Cómo habilitar/deshabilitar funciones nativas de PHP – Tutorial php.ini

Publicado el 2024-11-02
Navegar:336

En este artículo quiero brindarte el procedimiento paso a paso para habilitar o deshabilitar funciones nativas de php editando la directiva “disable_functions” en el archivo php.ini.

A veces es necesario personalizar la configuración PHP predeterminada en su servidor para adaptarla a la compatibilidad de su sistema con el entorno de producción.

¿Por qué este tutorial?

Soy el autor de Inspector.dev, el paquete de monitoreo en tiempo real para Laravel y Symfony. Este paquete utiliza las funciones nativas de PHP pro_open y proc_close para realizar la transferencia de datos desde su servidor a la API Inspector de forma asincrónica.

También se puede configurar para usar las funciones CURL nativas de PHP que están habilitadas por defecto, pero en este caso enviará los datos de monitoreo al Inspector de forma sincrónica como lo hacen otros paquetes como Sentry, Bugsnag, etc. significa que su aplicación podría ralentizarse un poco porque el motor php necesita esperar antes de finalizar la conexión con el cliente.

Recientemente, algunos desarrolladores se comunicaron conmigo porque las funciones proc_open y proc_close estaban deshabilitadas en su configuración de php, por lo que necesitan desbloquearlas para aprovechar el envío de datos asincrónicos.

Es bastante raro, pero decidí escribir este tutorial como recurso de soporte para este caso de uso.

¿Qué es el archivo php.ini?

El archivo php.ini es EL archivo de configuración de PHP. El archivo contiene una lista de pares clave/valor llamados "directivas". Las directivas se agrupan en secciones, aunque éstas tienen principalmente fines organizativos.

Cuando PHP se inicia, lee este archivo y configura estructuras de datos internas para almacenar la configuración. Durante la ejecución, PHP hace referencia a estas estructuras de datos internas para determinar cómo debe comportarse en muchas áreas clave, como: manejo y registro de errores, límites de recursos (memoria, tiempo de ejecución), carga de archivos, conexiones de bases de datos y más.

Para alguien que también se pregunta: PHP puede funcionar incluso si no hay un archivo php.ini, simplemente aplicará los valores predeterminados a todas las directivas.

Para quien no esté familiarizado con él, aquí hay un ejemplo de un archivo php.ini:

https://github.com/php/php-src/blob/master/php.ini-production

Activar/Desactivar funciones en php.ini

Editando el archivo php.ini podemos deshabilitar funciones PHP nativas que no podrás llamar dentro de tu código PHP.

A veces esta característica se utiliza para restringir el uso de algunas funciones en entornos de alojamiento compartido, ya que un uso incorrecto de las mismas puede causar problemas de seguridad a otros usuarios. Funciones como exec() generalmente están deshabilitadas, pero a veces los proveedores de servidores son demasiado conservadores y pueden deshabilitar funciones necesarias en las tareas de programación cotidianas.

Localice el archivo php.ini

Ejecute el siguiente comando en la terminal de su máquina para obtener la ubicación actual del archivo (funciona tanto para Win como para Unix):

php --ini

Ubicaciones comunes: /etc/php.ini, /etc/php/8.x/php.ini (reemplace x con el número de versión de su instalación)

Para editar archivos en el servidor prefiero usar el editor vim que debería estar disponible en cualquier máquina Unix.

// Use the file path from the command above
sudo vim /etc/php.ini

Desplácese hacia abajo hasta la directiva "disable_functions". Debe estar en la primera mitad del archivo y contener una lista de funciones separadas por una coma.

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

Edite el archivo php.ini

  • Presiona la letra "i" en tu teclado para ingresar al modo INSERT en vim.
  • Eliminar las funciones proc_open y proc_close de la lista.
  • Cuando termine de editar el archivo, presione la tecla ESC. Esto te saca del modo INSERT y “– INSERT –” desaparece de la parte inferior izquierda de tu terminal.
  • Para guardar el archivo, escriba “:wq”, que es la instrucción de escritura y salida.

Reinicie el motor PHP

Para cargar las nuevas configuraciones es necesario reiniciar PHP. Las instrucciones a continuación deberían funcionar en la mayoría de los servidores. Eventualmente podrás buscar en Google un sistema operativo específico.

// Change the version of the PHP with what is in use in your machine
sudo systemctl restart php8.2-fpm.service

Para más artículos técnicos puedes seguirme en Linkedin o X.

Monitoriza tu aplicación PHP gratis

Inspector es una herramienta de monitoreo de ejecución de código diseñada específicamente para desarrolladores de software. No necesita instalar nada a nivel de servidor, simplemente instale el paquete Laravel o Symfony y estará listo para comenzar.

Si busca monitoreo HTTP, información sobre consultas de bases de datos y la capacidad de reenviar alertas y notificaciones a su entorno de mensajería preferido, pruebe Inspector de forma gratuita. Registre su cuenta.

O obtenga más información en el sitio web: https://inspector.dev

How to enable/disable PHP native functions – php.ini Tutorial

Declaración de liberación Este artículo se reproduce en: https://dev.to/inspector/how-to-enabledisable-php-native-functions-phpini-tutorial-kpg?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3