
COMO SABER SI PHP SE ESTÁ EJECUTANDO DESDE CONSOLA O DESDE NAVEGADOR
En php es posible determinar si un script está siendo ejecutado desde la línea de comandos (CLI), o consola, o desde un navegador. Hay varias formas de saberlo, utilizando funciones y constantes integradas de php. A continuación, te explico los métodos más comunes y te proporciono ejemplos prácticos.
- Usar la constante PHP_SAPI: La constante PHP_SAPI indica el Server API (SAPI) que está utilizando php. En la línea de comandos, el valor suele ser cli, mientras que en un servidor web puede ser apache2handler, fpm-fcgi, cgi-fcgi, entre otros.
if (PHP_SAPI === 'cli') { echo 'El script está siendo ejecutado desde la consola (CLI).'; } else { echo 'El script está siendo ejecutado desde un navegador (web).'; }
- Usar la función php_sapi_name()
Similar a PHP_SAPI, la función php_sapi_name devuelve el nombre del SAPI en uso como una cadena.
if (php_sapi_name() === 'cli') { echo "Ejecutado desde la consola.\n"; } else { echo "Ejecutado desde el navegador.\n"; }
- Verificar la variable $_SERVER['REQUEST_METHOD']
En un entorno web, $_SERVER['REQUEST_METHOD'] (como GET o POST) suele estar definida, mientras que en CLI no existe.
if (isset($_SERVER['REQUEST_METHOD'])) { echo "Ejecutado desde el navegador (método: {$_SERVER['REQUEST_METHOD']}).\n"; } else { echo "Ejecutado desde la consola.\n"; }
- Verificar la variable $_SERVER['argv']
En CLI, $_SERVER['argv'] contiene los argumentos pasados al script. En un entorno web, no está definida o está vacía.
if (isset($_SERVER['argv'])) { echo "Ejecutado desde la consola. Argumentos: " . implode(', ', $_SERVER['argv']) . "\n"; } else { echo "Ejecutado desde el navegador.\n"; }
- Scripts multiuso: Si un script debe comportarse de manera diferente en CLI y en un entorno web (por ejemplo, mostrar texto plano en CLI y HTML en el navegador).
- Tareas programadas: Para asegurarte de que un script solo se ejecute desde CLI (por ejemplo, en un cron job).
- Depuración: Registrar el entorno de ejecución para auditorías o debugging.
- Seguridad: Restringir ciertas operaciones (como comandos del sistema) a CLI para evitar riesgos en entornos web.
- PHP_SAPI === 'cli' es el método más confiable y ampliamente utilizado.
- Entornos no estándar: Algunos entornos (como PHP-FPM o scripts ejecutados en pipelines) pueden tener SAPIs diferentes (por ejemplo, fpm-fcgi). Ajusta las verificaciones según el caso.
- Portabilidad: Para scripts portables, combina PHP_SAPI con verificaciones de $_SERVER['argv'] o $_SERVER['REQUEST_METHOD'] para cubrir la mayoría de los casos.