在 PHP 中获取当前脚本文件名
你的脚本可能需要当前文件名及其当前正在执行的目录名。在本教程文章中,我们将讨论如何获取项目中当前脚本的文件名。
PHP 提供了多种方式来查找当前文件名。首先,我们将简要了解所有参数和方法,然后将它们组合起来得到结果。
-
__FILE__
:PHP 提供了 9 个神奇的常量,根据它们的用途来使用。这些常量是由各种扩展创建的。所有这些常量都在编译时解析。
__FILE__
是这样一个神奇的常量之一,它为你提供当前 .php 文件的文件系统路径。 -
$_SERVER
:$_SERVER
是一个包含有关标题、路径和脚本位置信息的数组。网络服务器创建所有这些信息。 -
PHP_SELF
:PHP_SELF
是一个变量,用于获取当前正在执行的脚本的文件名。它是相对于文档根的。当用户在命令行中运行此命令时,它会打印有关脚本名称的信息。 -
SCRIPT_FILENAME
:这是一个变量,用于获取当前正在执行的脚本的文件名,唯一的区别是它的路径是绝对的。
-
SCRIPT_NAME
:它包含当前脚本的路径。这对于需要指向自身的页面很有用。
-
REQUEST_URI
:URI 用于访问页面的位置,例如,
/index.html
。
现在让我们一起使用上述所有命令来获取文件名。
-
$_SERVER['SCRIPT_NAME']
:带有文件扩展名的父文件名
-
$_SERVER['PHP_SELF']
:带有文件扩展名的父文件相对 URL。例如,
http://example.com/parentFolder/child.php
将是/parentFolder/child.php
。 -
$_SERVER['SCRIPT_FILENAME']
:带有文件扩展名的父文件完整 URL
-
$_SERVER['REQUEST_URI']
:父文件父文件夹名称与
如果文件的路径作为参数提供给 basename()
函数,则内置的 PHP 函数 basename()
将返回文件的基本名称。
-
basename(__FILE__)
:带有 PHP 文件扩展名的当前文件名。
-
basename(__FILE__, '.php')
:没有 PHP 文件扩展名的当前文件名。
-
basename($_SERVER['PHP_SELF'], ".php")
:没有 PHP 文件扩展名的当前文件名。
-
basename($_SERVER['PHP_SELF'])
:带有 PHP 文件扩展名的当前文件名。
-
pathinfo(__FILE__, PATHINFO_FILENAME)
:没有 PHP 文件扩展名的当前文件名。
PHP 中获取当前脚本文件名的示例代码
<?php
echo "\$_SERVER['SCRIPT_NAME']: ";
echo $_SERVER['SCRIPT_NAME'];
echo "\n";
echo "\$_SERVER['PHP_SELF']: ";
echo $_SERVER['PHP_SELF'];
echo "\n";
echo "\$_SERVER['SCRIPT_FILENAME']: ";
echo $_SERVER['SCRIPT_FILENAME'];
echo "\n";
echo "basename(__FILE__): ";
echo basename(__FILE__);
echo "\n";
echo "basename(__FILE__, '.php'): ";
echo basename(__FILE__, '.php');
echo "\n";
echo "basename(\$_SERVER['PHP_SELF'], '.php'): ";
echo basename($_SERVER['PHP_SELF'], '.php');
echo "\n";
echo "basename(\$_SERVER['PHP_SELF']): ";
echo basename($_SERVER['PHP_SELF']);
echo "\n";
echo "pathinfo(__FILE__, PATHINFO_FILENAME): ";
echo pathinfo(__FILE__, PATHINFO_FILENAME);
echo "\n";
?>
输出:
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn