PHP 中的 $_SERVE['PHP_SELF'] 的一个注意点
使用的是 Apache 搭配 PHP 7
手册:
当前执行脚本的文件名,与 document root 有关。例如,在地址为
http://example.com/foo/bar.php 的脚本中使用 $_SERVER['PHP_SELF'] 将得到
/foo/bar.php。__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0
版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可
用。
$_SERVE[‘PHP_SELF’] 读取的是当前执行脚本的文件名
不是简单的理解成 url 中的文件名
因为 url 中的文件名可能不存在
注意下面这种情况:
在 Apache 的配置文件中,有设置文件夹的默认打开文件
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
比如我这里设置的是 index.html 和 index.php 两个文件
那么在访问文件夹而没有指定访问文件的时候
会自动访问文件夹下的 index.html
没有 index.html , 就访问 index.php
都没有,就不访问任何文件
比如现在的 url 是
http://localhost/
那么此时,url 中并没有体现出是访问哪一个文件
但是假如在根目录下有 index.php
这个时候就自动访问 index.php
而此时通过 $_SERVER[‘PHP_SELF’] 是可以获取到当前文件名的
即使这个文件名并没有在 url 上显示出来
<?php
echo $_SERVER['PHP_SELF'] ;