如何用PHP检查是否正在从控制台或浏览器请求中运行脚本?

2020/12/21 11:21 · php ·  · 0评论

我尝试了诸如$ _ENV ['CLIENTNAME'] =='Console'之类的事情,但这似乎仅适用于某些操作系统(在Windows中工作,而不在Linux中工作)。

我尝试了!empty($ _ ENV ['SHELL']),但是那也不总是可行的...

有没有一种方法可以检查它在所有OS /环境中都可以正常工作?

采用 php_sapi_name()

返回一个小写的字符串,该字符串描述PHP使用的接口类型(服务器API,SAPI)。例如,在CLI PHP中,此字符串将为“ cli”,而对于Apache,根据所使用的确切SAPI,它可能具有几个不同的值。

例如:

$isCLI = ( php_sapi_name() == 'cli' );

您也可以使用常量 PHP_SAPI

检查http://php.net/manual/en/features.commandline.php#105568
“ PHP_SAPI”常量

<?php
if (PHP_SAPI === 'cli')
{
   // ...
}
?> 
if ($argc > 0) {
    // Command line was used
} else {
    // Browser was used
}

$ argc保留传递给命令行的参数数量。只需使用php page.php,$ argc将返回1

使用浏览器调用page.php,$ argc将返回NULL

我知道这是一个老问题,但是从记录来看,我看到传入的HTTP请求没有User-Agent头,并且在这种情况下PHP不会自动定义HTTP_USER_AGENT。

一种解决方案是检查是否定义了STDIN:

if (!defined("STDIN")) {
    die("Please run me from the console - not from a web-browser!");
}

检查HTTP_USER_AGENT,它应该存在于http请求中

本文地址:http://php.askforanswer.com/ruheyongphpjianchashifouzhengzaicongkongzhitaihuoliulanqiqingqiuzhongyunxingjiaoben.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!