我正在编写一个我希望从Web访问禁用的PHP脚本(我会要求用户将其从Web根目录移出并通过CLI执行,但您永远不知道他们是否会听!)
如果浏览器请求页面死亡,是否会出现一个简单的功能?
感谢任何想法。
答案 0 :(得分:6)
您可以使用php_sapi_name()
测试脚本是否通过CLI运行。
在HTTP服务器上运行时,它可以返回一大堆不同的可能值 - 很难在那里做出可靠的区分 - 但CLI似乎只有一个可能的返回值:cli
。
如果您正在寻找通用解决方案,请务必阅读下面的评论主题,以获取有关潜在问题的详细讨论。
答案 1 :(得分:4)
'PHP_SELF'的文件名 目前执行脚本,相对 到文档根目录。例如, $ _SERVER ['PHP_SELF']在脚本中 地址 http://example.com/test.php/foo.bar 将是/test.php/foo.bar。该 FILE 常量包含当前的完整路径和文件名(即 包括)文件。如果PHP正在运行 命令行处理器这个变量 包含自PHP以来的脚本名称 4.3.0。以前它不可用。
答案 2 :(得分:1)
我不是PHP专家,但您可以检查$ _SERVER变量吗?
答案 3 :(得分:0)
您可以使用php-sapi-name函数来检测Web服务器或cli接口是否请求了脚本。
答案 4 :(得分:0)
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) != 'cli') {
die "You are not using CLI".PHP_EOL;
}
答案 5 :(得分:0)
你可以使用php-sapi-name,或者你可以使用预定义的常量,这个常数稍微快一点(虽然你从来没有注意到!)
<?php
if(PHP_SAPI != 'cli') exit;
// continue