Tengo un script común que estoy incluyendo en mis archivos PHPcron y los archivos que están accediendo a través del navegador. Alguna parte del código, solo necesito para archivos que no sean cron. ¿Cómo puedo detectar si la ejecución es desde CLI o desde el navegador (sé que se puede hacer pasando algunos argumentos con los archivos cron, pero no tengo acceso a crontab). Hay alguna otra manera ?En PHP, ¿cómo detectar la ejecución desde el modo CLI o desde el navegador?
Respuesta
Utilice la función php_sapi_name()
.
if (php_sapi_name() == "cli") {
// In cli-mode
} else {
// Not in cli-mode
}
Estas son algunas notas relevantes de los documentos:
php_sapi_name - Devuelve el tipo de interfaz entre el servidor web y PHP
Aunque no es exhaustiva, los posibles valores de retorno incluyen aolserver , apache, apache2filter, apache2handler, caudium, cgi (hasta PHP 5.3), cgi-fcgi, cli, cli-server, continuidad, embebido, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux y webjames .
Creo que puede verlo desde las variables $ _SERVER. Intente imprimir la matriz $ _SERVER para la CLI del navegador & y debería ver las diferencias.
Esto puede ser cierto, pero no puede ser una forma confiable de determinar la interfaz que se utiliza. La forma correcta de verificar es con 'php_sapi_name()'. – DesignerGuy
Hay una constante PHP_SAPI
tiene el mismo valor que php_sapi_name()
.
(disponible en PHP> = 4.2.0)
¡Esta es la mejor manera! – Ankit
Se puede utilizar:
if (isset($argc))
{
// CLI
}
else
{
// NOT CLI
}
-1 - '$ argc' podría haberse establecido dentro de la aplicación, ¿no es así? No es un método confiable. Me costó medio día de trabajo una vez. 'php_sapi_name()' es la única buena manera que conozco. –
también $ argv/$ argc se puede completar con variables GET en algunas configuraciones. –
if(php_sapi_name() == "cli") {
//In cli-mode
} else {
//Not in cli-mode
}
- 1. Detectar la versión exacta del sistema operativo desde el navegador
- 2. PHP APC en modo CLI
- 3. Detectar desde el navegador si está instalada una aplicación específica
- 4. Cómo detectar el modo incógnito desde el fondo de la extensión
- 5. Cómo detectar el estado HTTP desde JavaScript
- 6. Emulación de la CLI de PHP en un navegador
- 7. Imprimir desde el navegador javascript?
- 8. ¿Puede PHP detectar si se ejecuta desde un trabajo cron o desde la línea de comandos?
- 9. Cómo imprimir un PDF desde el navegador
- 10. Detectar conexión de navegador cerrada en PHP
- 11. Ejecutando un ejecutable en modo usuario desde el modo kernel
- 12. ¿Cómo recibo una "URL compartida" desde el navegador?
- 13. ¿Cómo detectar el modo de procesamiento del navegador para la página actual?
- 14. Cómo detectar el modo de edición en el iPhone UITableView
- 15. ¿Cómo obtener la llamada desde el modo estricto?
- 16. iphone 4 sdk: detectar el retorno desde el modo de fondo
- 17. iOS, detectar ad-hoc desde el código
- 18. ¿Copia la imagen al portapapeles desde el navegador en Javascript?
- 19. Detectar compatibilidad con imágenes de fondo y colores de fondo al imprimir desde el navegador
- 20. Detectar el tap con pyaudio desde el micrófono en vivo
- 21. Cómo copiar texto desde el modo de comandos en Vim
- 22. ¿Es posible cargar una extensión desde la interfaz PHP cli, sin modificar el archivo ini?
- 23. ¿Cómo verificar con PHP si el script se está ejecutando desde la consola o la solicitud del navegador?
- 24. Python Intercept Web Traffic desde el navegador
- 25. Cómo detectar la ejecución de javascript en el control WebBrowser
- 26. Enviando un SMS desde el navegador móvil
- 27. ¿Cómo detectar el sistema operativo en ejecución?
- 28. ¿Cómo subir un archivo (archivo adjunto) desde el navegador?
- 29. cómo hacer que un archivo PHP pueda ejecutarse solo a través del modo CLI?
- 30. Detectar desde el navegador si hay una aplicación específica instalada en Android
+1 es la única forma correcta de hacerlo. –
PHP_SAPI también se puede usar para esto, por lo que no es la única manera correcta de hacerlo – mishu
. Solía ser una respuesta de enlace único hasta que alguien copiara la respuesta de @Linus Unnebäck. ¡Mal hábito! Devolvió este, votó el otro ... –