php获取当前文件绝对路径

本文介绍了PHP中的魔术常量,包括__LINE__、__FILE__、__FUNCTION__、__CLASS__和__METHOD__等,解释了它们的作用及如何在脚本中使用这些常量来获取有关脚本自身的重要信息。
1.dirname(__FILE__) 函数返回的是脚本所在在的路径
<?php
$basedir = dirname(__FILE__);
echo $basedir;
//将在页面打印出一个这个文件所在绝对路径!
?>
之后可以使用
define('ROOT', dirname(__FILE__));
require_once ROOT.'/config/conf_mysql.php';
引入文件

几个 PHP 的“魔术常量”
名称 说明
__LINE__ 文件中的当前行号。
[b]__FILE__ [/b]文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)
<think>我们正在讨论如何获取当前路径的绝对路径,用户的问题与之前讨论的sudo错误无关,而是关于在不同编程环境中获取绝对路径的方法。 根据用户提供的引用,我们可以总结不同语言下获取当前脚本/文件绝对路径的方法: 1. 在Bash shell脚本中: 使用 `readlink -f "$0"` 获取当前脚本绝对路径(引用[1])。 2. 在Python中: 方法1:使用 `os.path.abspath(__file__)` 获取当前文件绝对路径(引用[2])。 方法2:使用 `os.path.realpath(__file__)` 获取规范化的绝对路径(引用[4])。 3. 在Java中: 在Web应用中,可以通过ServletContext的getRealPath方法获取(引用[3])。对于普通Java类,可以使用: String path = MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 或者(更简单): String path = new File("").getAbsolutePath(); 4. 在PHP中: 使用 `$_SERVER['PHP_SELF']` 获取当前执行脚本文件名(引用[5]),但这只是相对路径。要获取绝对路径,可以使用: $absolute_path = realpath(__FILE__); 用户的问题是“我想获取当前路径的绝对路径”,但没有指明是哪种环境。因此,我们需要分情况说明。 另外,注意“当前路径”可能有两种解释: a) 当前工作目录(current working directory):即运行程序时所在的目录。 b) 当前脚本/文件所在的目录。 我们通常需要的是当前脚本所在的目录(即脚本文件所在的绝对路径),但有时也可能是当前工作目录。 下面按语言和场景给出解决方案: </think>### 如何获取当前路径的绝对路径 在不同编程环境中获取当前路径绝对路径的方法如下: #### 1. **Shell/Bash 脚本** 使用 `readlink` 或 `pwd` 命令: ```bash #!/bin/bash # 获取脚本文件绝对路径 script_abs_path=$(readlink -f "$0") echo "脚本绝对路径: $script_abs_path" # 获取当前工作目录的绝对路径 current_dir_abs=$(pwd) echo "工作目录绝对路径: $current_dir_abs" ``` - `$0` 表示当前脚本文件名 - `readlink -f` 解析符号链接并返回绝对路径[^1] - `pwd` 直接返回当前工作目录的绝对路径 #### 2. **Python** 使用 `os` 模块: ```python import os # 获取当前文件绝对路径 file_abs_path = os.path.abspath(__file__) print(f"文件绝对路径: {file_abs_path}") # 获取当前工作目录的绝对路径 dir_abs_path = os.path.abspath(os.getcwd()) print(f"目录绝对路径: {dir_abs_path}") ``` - `__file__` 表示当前执行文件的路径 - `os.path.abspath()` 将路径转换为绝对路径[^2][^4] #### 3. **Java** 通过类加载器或系统属性: ```java // 获取当前类编译后的绝对路径 String classPath = MyClass.class.getProtectionDomain() .getCodeSource().getLocation().getPath(); System.out.println("类路径: " + classPath); // 获取工作目录绝对路径 String workDir = System.getProperty("user.dir"); System.out.println("工作目录: " + workDir); ``` - `user.dir` 系统属性返回当前工作目录[^3] #### 4. **PHP** 使用 `__FILE__` 或 `getcwd()`: ```php <?php // 获取当前文件绝对路径 $file_abs = realpath(__FILE__); echo "文件绝对路径: $file_abs"; // 获取工作目录绝对路径 $dir_abs = realpath(getcwd()); echo "工作目录绝对路径: $dir_abs"; ``` - `realpath()` 解析路径中的符号链接[^5] #### 关键区别说明 | 方法 | 返回值指向 | |-----------------------|------------------------------| | 文件路径 (如 `__file__`) | 当前**执行文件**的绝对路径 | | 工作目录 (如 `pwd`) | 运行命令时的**当前目录**路径 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值