PHP 文件写入功能实现

在PHP网站中,写入文档(文件)是一个常见需求,包括日志记录、数据导出、内容生成等功能。以下是完整的PHP文件写入实现方案。

基础文件写入方法

1. 使用函数(简单方式)

file_put_contents()

php

// 要写入的内容

$content = "这是要写入文件的内容\n第二行内容\n";

// 文件路径(确保目录有写入权限)

$filePath = '';

// 写入文件(会覆盖原有内容)

if (file_put_contents($filePath, $content) !== false) {

echo "文件写入成功!";

} else {

echo "文件写入失败!";

// 追加内容到文件

$additionalContent = "这是追加的内容\n";

if (file_put_contents($filePath, $additionalContent, FILE_APPEND) !== false) {

echo "内容追加成功!";

2. 使用和(更灵活的方式)

fopen()

fwrite()

php

// 文件路径

$filePath = 'data/log_' . date('Y-m-d') . '.log';

// 要写入的内容(可以是数组或字符串)

$logData = [

'time' => date('Y-m-d H:i:s'),

'message' => '用户登录成功',

'ip' => $_SERVER['REMOTE_ADDR'],

'user_agent' => $_SERVER['HTTP_USER_AGENT']

// 将数组转换为字符串(例如JSON格式)

$logEntry = json_encode($logData) . "\n";

// 以追加模式打开文件

$fileHandle = fopen($filePath, 'a');

if ($fileHandle) {

// 写入内容

if (fwrite($fileHandle, $logEntry) !== false) {

echo "日志记录成功!";

} else {

echo "写入文件失败!";

// 关闭文件句柄

fclose($fileHandle);

} else {

echo "无法打开文件!";

高级文件写入应用

1. CSV 文件写入

php

// 数据准备(二维数组)

$users = [

['ID', '用户名', '邮箱', '注册时间'],

[1, '张三', 'zhangsan@example.com', '2023-01-15'],

[2, '李四', 'lisi@example.com', '2023-02-20'],

[3, '王五', 'wangwu@example.com', '2023-03-10']

// 打开文件(写入模式会覆盖已有文件)

$filePath = 'exports/users.csv';

$fileHandle = fopen($filePath, 'w');

if ($fileHandle) {

// 写入每一行

foreach ($users as $user) {

fputcsv($fileHandle, $user);

fclose($fileHandle);

echo "CSV文件导出成功!";

} else {

echo "无法创建CSV文件!";

2. 安全日志记录(带锁机制)

php

function writeToLog($message, $logFile = 'app.log') {

// 确保目录存在

$logDir = dirname($logFile);

if (!is_dir($logDir)) {

mkdir($logDir, 0755, true);

// 获取独占锁并写入日志

$fileHandle = fopen($logFile, 'a');

if ($fileHandle) {

if (flock($fileHandle, LOCK_EX)) { // 独占锁

$logEntry = sprintf(