tags:

views:

424

answers:

3

It's available to browser,

but I don't want it to execute when browsed by user,

say,when browsed should exit,

is there a way to detect whether it's currently Cmmand Line Mode?

A: 

Here is a trick:

You can check for the $argc/$argv parameters which are always available in CLI mode.

#!/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

Boris Guéry
Why fiddle with INI settings when php_sapi_name() is designed for exactly this purpose?
Ben Blank
There is another problem,use this way,when debugging in Zend,it's also treated as "Not CLI mode" even when it is actually
Shore
A: 

Another trick, $_SERVER has variables that are only set in CLI mode.

Ólafur Waage