在PHP开发过程中,读取本地文件内容是非常常见的操作,无论是读取配置文件、日志文件还是用户上传的本地文件,都需要用到文件读取相关的函数。PHP提供了多种读取文件的方法,不同方法适用于不同的场景,下面逐一介绍具体的操作步骤。

使用file_get_contents函数读取文件
file_get_contents是PHP中读取文件最简单的方法,它可以将整个文件内容读取到一个字符串中,适合读取较小的文件。
操作步骤
- 确认要读取的本地文件路径,路径可以是相对路径也可以是绝对路径
- 调用file_get_contents函数,传入文件路径作为参数
- 判断返回值是否成功,成功则得到文件内容字符串,失败返回false
代码示例
<?php
// 要读取的本地文件路径
$filePath = './test.txt';
// 读取文件内容
$content = file_get_contents($filePath);
// 判断读取是否成功
if ($content !== false) {
echo '文件内容:' . $content;
} else {
echo '读取文件失败,请检查文件路径是否正确';
}
?>
使用file函数读取文件
file函数会将文件内容按行读取到一个数组中,每一行作为数组的一个元素,适合需要按行处理文件内容的场景。
操作步骤
- 准备本地文件路径
- 调用file函数传入文件路径
- 遍历返回的数组即可得到每一行的内容
代码示例
<?php
$filePath = './test.txt';
// 读取文件到数组
$lines = file($filePath);
if ($lines !== false) {
echo '文件总行数:' . count($lines) . '<br/>';
// 遍历每行内容
foreach ($lines as $lineNum => $lineContent) {
echo '第' . ($lineNum + 1) . '行:' . $lineContent . '<br/>';
}
} else {
echo '读取文件失败';
}
?>
使用fopen、fread组合读取文件
这种方式通过打开文件句柄,分块读取文件内容,适合读取较大的文件,避免一次性占用过多内存。
操作步骤
- 使用fopen函数打开文件,指定打开模式为只读r
- 判断文件句柄是否有效
- 使用fread函数读取指定长度的内容,循环读取直到文件末尾
- 读取完成后使用fclose函数关闭文件句柄
代码示例
<?php
$filePath = './test.txt';
// 打开文件,只读模式
$handle = fopen($filePath, 'r');
if ($handle) {
$content = '';
// 每次读取1024字节,循环读取直到文件末尾
while (!feof($handle)) {
$content .= fread($handle, 1024);
}
fclose($handle);
echo '文件内容:' . $content;
} else {
echo '打开文件失败';
}
?>
使用fopen、fgets组合按行读取
fgets函数每次读取文件的一行内容,结合fopen使用可以逐行处理大文件,内存占用更低。
操作步骤
- fopen打开文件获取句柄
- 循环调用fgets函数读取每行内容,直到文件末尾
- 关闭文件句柄
代码示例
<?php
$filePath = './test.txt';
$handle = fopen($filePath, 'r');
if ($handle) {
$lineNum = 1;
while (!feof($handle)) {
$line = fgets($handle);
if ($line !== false) {
echo '第' . $lineNum . '行:' . $line . '<br/>';
$lineNum++;
}
}
fclose($handle);
} else {
echo '打开文件失败';
}
?>
注意事项
- 读取文件前要确保PHP进程对目标文件有读取权限,否则会读取失败
- 使用fopen打开文件后一定要记得调用fclose关闭句柄,避免资源泄露
- 读取大文件时优先选择分块读取的方式,不要使用file_get_contents一次性读取,防止内存溢出
- 如果文件路径包含中文,需要注意服务器的编码设置,避免出现路径识别错误的问题
| 方法 | 适用场景 | 返回值类型 |
|---|---|---|
| file_get_contents | 小文件整体读取 | 字符串或false |
| file | 小文件按行处理 | 数组或false |
| fopen+fread | 大文件分块读取 | 字符串 |
| fopen+fgets | 大文件按行处理 | 逐行字符串 |
PHPfile_get_contentsfilefopenfread修改时间:2026-07-20 13:39:29