2009-06-02 2 views
9

E 'disponibile al browser,come rendere un file PHP eseguibile solo attraverso la modalità CLI?

ma io non voglio che da eseguire quando naviga dall'utente,

dicono, quando naviga dovrebbe uscire,

c'è un modo per rilevare se è attualmente Cmmand Modalità di linea?

+0

Ho trovato la risposta, posso controllare: isset ($ argv) – omg

+0

Probabilmente stai meglio usando php_sapi_name. È il modo accettato di fare quello che vuoi. –

+0

@Shore - Non dovresti davvero usare $ argv. È controllato da un'impostazione INI, non CGI vs. CLI: http://us3.php.net/manual/en/ini.core.php#ini.register-argc-argv –

risposta

1

Ecco un trucco:

È possibile controllare per i $ argc/$ parametri argv che sono sempre disponibili in modalità CLI.

#!/usr/bin/php 
<?php 

ini_set('register_argc_argv', 0); 

if (!isset($argc) || is_null($argc)) 
{ 
    echo 'Not CLI mode'; 
} else { 
    echo 'CLI mode'; 
} 

register_argc_argv

$argc

+2

Perché giocare con le impostazioni INI quando php_sapi_name() è progettato esattamente per questo scopo? –

+0

C'è un altro problema, usare in questo modo, quando si esegue il debug in Zend, viene anche considerato come "Non in modalità CLI" anche quando è effettivamente – omg

1

Un altro trucco, $_SERVER ha le variabili che sono impostate solo in modalità CLI.

2

Ecco quello che sto usando, per molto tempo ... (dal PHP 4 IIRC)

(PHP_SAPI !== 'cli' || isset($_SERVER['HTTP_USER_AGENT'])) && die('cli only'); 

da utilizzare come prima riga dello script php.