Ho uno script comune che Im include nei miei file PHPcron e nei file che stanno accedendo attraverso il browser. Alcune parti del codice, ho bisogno solo di file non cron. Come posso rilevare se l'esecuzione è da CLI o tramite browser (so che può essere fatto passando alcuni argomenti con i file cron ma non ho accesso a crontab). C'è un altro modo?In PHP, come rilevare l'esecuzione è dalla modalità CLI o tramite browser?
risposta
Utilizzare la funzione php_sapi_name()
.
if (php_sapi_name() == "cli") {
// In cli-mode
} else {
// Not in cli-mode
}
Ecco alcune note importanti dalla documentazione:
php_sapi_name - Restituisce il tipo di interfaccia tra web server e PHP
Anche se non esaustivo, i possibili valori di ritorno includono AOLserver , apache, apache2filter, apache2handler, caudium, cgi (fino a PHP 5.3), cgi-fcgi, cli, cli-server, continuità, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux e webjames .
Penso che tu possa vederlo dalle variabili $ _SERVER. Prova a stampare l'array $ _SERVER per entrambi i browser & CLI e dovresti vedere le differenze.
Questo può essere vero, ma non può essere un modo affidabile per determinare l'interfaccia utilizzata. Il modo corretto per controllare è con 'php_sapi_name()'. – DesignerGuy
C'è una costante PHP_SAPI
ha lo stesso valore di php_sapi_name()
.
(disponibile in PHP> = 4.2.0)
Questo è il modo migliore! – Ankit
È possibile utilizzare:
if (isset($argc))
{
// CLI
}
else
{
// NOT CLI
}
-1 - '$ argc' potrebbe essere stato impostato all'interno dell'applicazione, no? Non è un metodo affidabile. Mi è costato una mezza giornata di lavoro una volta. 'php_sapi_name()' è l'unico buon modo che conosco. –
anche $ argv/$ argc può essere riempito con variabili GET su alcune configurazioni! –
if(php_sapi_name() == "cli") {
//In cli-mode
} else {
//Not in cli-mode
}
- 1. PHP APC in modalità CLI
- 2. Rilevare se un browser è in modalità schermo intero
- 3. Come posso rilevare il browser con PHP o JavaScript?
- 4. Emulazione della CLI di PHP in un browser
- 5. Come verificare se l'utente è in modalità di contrasto elevato tramite JavaScript o CSS
- 6. come rendere un file PHP eseguibile solo attraverso la modalità CLI?
- 7. Come rilevare se Vim è in esecuzione in modalità limitata?
- 8. C'è un modo per sapere se uno script php è in esecuzione in modalità cli?
- 9. Come posso rilevare IE10 da JS quando la modalità browser è IE9?
- 10. Come rilevare il browser è andato a schermo intero
- 11. Come rilevare Modalità aereo/Modalità volo in IOS Swift
- 12. PHP: come determinare se l'invocazione corrente proviene dalla CLI o dal server Web?
- 13. PHP7 cli vs php-fpm
- 14. Come capire se un browser è in modalità "stranezze"?
- 15. Come rilevare che UITableView è in modalità di modifica?
- 16. Come rilevare se un utente si è disconnesso, in php?
- 17. Come rilevare la modalità STAMINA?
- 18. Come rilevare se il browser è compatibile con ES2015
- 19. come rilevare se la modalità di azione è già presente
- 20. Controllare la lingua del browser tramite PHP?
- 21. Come rilevare l'errore require() o include() in PHP?
- 22. Come eseguire emacs in modalità CLI sotto mintty in windows?
- 23. Modalità Vi per redis-cli
- 24. Come rilevare l'attività del browser?
- 25. Equivalente di $ _ENV ['APACHE_RUN_USER'] in PHP-CLI
- 26. Come aggiornare PHP CLI OSX?
- 27. Codeigniter HMVC dalla CLI: non entra nel controllore
- 28. Abilitazione dell'estensione di Chrome in modalità di navigazione in incognito tramite i contrassegni CLI?
- 29. Come rilevare l'app host in modalità Zoom o Normale in iPhone 6 Plus?
- 30. Rileva se il monitor è acceso dalla modalità IE Kiosk
+1 l'unico modo giusto per farlo. –
anche il PHP_SAPI può essere utilizzato per questo, quindi non è proprio l'unico modo corretto per farlo – mishu
Questa era una risposta solo al collegamento finché qualcuno non ha copiato la risposta di @Linus Unnebäck. Cattiva abitudine! Svuota questo, upvote l'altro ... –