如何使PHP文件只能通过CLI模式运行?

如何使PHP文件只能通过CLI模式运行?,php,command-line-interface,Php,Command Line Interface,浏览器可以使用它 但我不希望它在用户浏览时执行 比如说,当浏览时应该退出 是否有办法检测当前是否为CMM和线路模式?请参阅: 短篇故事:。这里有一个技巧: 您可以检查$argc/$argv参数,这些参数在CLI模式下始终可用 #!/usr/bin/php <?php ini_set('register_argc_argv', 0); if (!isset($argc) || is_null($argc)) { echo 'Not CLI mode'; } el

浏览器可以使用它

但我不希望它在用户浏览时执行

比如说,当浏览时应该退出

是否有办法检测当前是否为CMM和线路模式?

请参阅:

短篇故事:。

这里有一个技巧:

您可以检查$argc/$argv参数,这些参数在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';
}
#/usr/bin/php

另一个技巧,
$\u服务器
的变量仅在CLI模式下设置。

这是我长期以来一直在使用的。。。(自php 4 iirc起)

#!/usr/bin/php
<?php 

ini_set('register_argc_argv', 0);  

if (!isset($argc) || is_null($argc))
{ 
    echo 'Not CLI mode';
} else {
    echo 'CLI mode';
}
用作php脚本的第一行

if (!defined('STDIN')) {
    // accessed through the web browser
    die();
}

我在创建PHP CLI脚本时使用它。工作得很好。

我找到了答案,可以检查:isset($argv)您可能最好使用php\u sapi\u名称。这是做你想做的事情的公认方式。@Shore-你真的不应该使用$argv。它是由INI设置控制的,而不是CGI与CLI:“它对浏览器可用”--理想情况下,这是您应该解决的问题。尽管可能重复感谢,我还是找到了检测的方法。当php_sapi_name()正是为此目的而设计时,为什么要摆弄INI设置?还有另一个问题,请使用这种方法,在Zend中调试时,它也被视为“非CLI模式”,即使它实际上是