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.
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.
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
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.
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
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.
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
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