如何使PHP文件只能通过CLI模式运行?
浏览器可以使用它 但我不希望它在用户浏览时执行 比如说,当浏览时应该退出 是否有办法检测当前是否为CMM和线路模式?请参阅:如何使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
#!/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模式”,即使它实际上是