2009-06-02 1 views
9

Она доступна для браузера,Как сделать файл PHP работоспособным только через режим CLI?

, но я не хочу, чтобы это выполнить, когда просмотрены пользователем,

сказать, когда просмотрел должен выйти,

есть способ, чтобы обнаружить, является ли она в настоящее время Cmmand Режим линии?

+0

Я нашел ответ, могу проверить: isset ($ argv) – omg

+0

Возможно, вам лучше использовать php_sapi_name. Это принятый способ делать то, что вы хотите. –

+0

@Shore - Вы действительно не должны использовать $ argv. Это контролируется установкой INI, а не CGI против CLI: http://us3.php.net/manual/en/ini.core.php#ini.register-argc-argv –

ответ

1

Вот трюк:

Вы можете проверить на $ ARGC/$ параметров ARGV, которые всегда доступны в режиме командной строки.

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

Зачем возиться с настройками INI, когда php_sapi_name() предназначена именно для этой цели? –

+0

Существует еще одна проблема: используйте этот способ, при отладке в Zend, он также рассматривается как «Не режим CLI», даже если он на самом деле – omg

1

Другой трюк, $_SERVER имеет переменные, которые только набор в режиме командной строки.

2

Вот что я использую, в течение долгого времени ... (с PHP 4 IIRC)

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

для использования в качестве первой строки сценария PHP.

Смежные вопросы