2009-06-02 10 views
9

Jest ona dostępna do przeglądarki,jak sprawić, aby plik PHP działał tylko w trybie CLI?

ale nie chcę go wykonać, gdy przejrzysz przez użytkownika,

powiedzieć, kiedy przeglądałem powinien zakończyć,

czy istnieje sposób, aby wykryć, czy jest aktualnie Cmmand Tryb linii?

+0

Znalazłem odpowiedź, mogę sprawdzić: isset ($ argv) – omg

+0

Prawdopodobnie lepiej korzystasz z php_sapi_name. Jest to akceptowany sposób robienia tego, co chcesz. –

+0

@Shore - Naprawdę nie powinieneś używać $ argv. Jest kontrolowany przez ustawienie INI, a nie CGI vs. CLI: http://us3.php.net/manual/en/ini.core.php#ini.register-argc-argv –

Odpowiedz

1

Oto sztuczka:

można sprawdzić za $ argc/$ argv parametrów, które są zawsze dostępne w trybie 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

Dlaczego fiddle z ustawieniami INI, gdy php_sapi_name() jest przeznaczony do dokładnie tego celu? –

+0

Jest inny problem, użyj tego sposobu, podczas debugowania w Zend, jest on również traktowany jako "tryb bez CLI", nawet jeśli jest on faktycznie – omg

1

Kolejny trik, $_SERVER ma zmiennych, które są ustawione tylko w trybie CLI.

2

Oto co używam, przez długi czas ... (od PHP 4 IIRC)

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

być stosowany jako pierwszej linii skryptu php.

Powiązane problemy