ZetCode

PHP tempnam 函数

最后修改于 2025 年 4 月 3 日

PHP tempnam 函数创建一个具有唯一名称的临时文件。它对于创建不会与现有文件冲突的临时存储非常有用。

基本定义

tempnam 函数在指定的目录中创建一个具有唯一名称的文件。它返回新创建文件的路径。

语法:tempnam(string $directory, string $prefix): string|false。如果失败,该函数返回 false。创建的文件是空的,并具有 0600 权限。

基本 tempnam 示例

这展示了使用 tempnam 创建临时文件的最简单用法。

basic_tempnam.php
<?php

declare(strict_types=1);

$tempFile = tempnam(sys_get_temp_dir(), 'TMP_');

echo "Temporary file created: " . $tempFile;

这会在系统临时目录中创建一个前缀为 'TMP_' 的临时文件。系统会自动分配一个唯一的名称以防止冲突。

自定义目录示例

您可以为临时文件创建指定一个自定义目录。

custom_directory.php
<?php

declare(strict_types=1);

$customDir = '/var/tmp/';
$tempFile = tempnam($customDir, 'APP_');

if ($tempFile !== false) {
    echo "Custom temp file: " . $tempFile;
} else {
    echo "Failed to create temp file";
}

在这里,我们在 '/var/tmp/' 中创建一个前缀为 'APP_' 的临时文件。 始终检查返回值,因为如果目录不存在或不可写,该函数可能会失败。

写入临时文件

此示例演示了如何将数据写入已创建的临时文件。

write_temp_file.php
<?php

declare(strict_types=1);

$tempFile = tempnam(sys_get_temp_dir(), 'DATA_');

if ($tempFile !== false) {
    file_put_contents($tempFile, "Temporary data storage\n");
    echo "Data written to: " . $tempFile;
    
    // Remember to clean up when done
    unlink($tempFile);
}

我们创建一个临时文件并向其中写入数据。请注意,我们在完成后手动删除该文件。PHP 不会自动删除临时文件。

安全处理临时文件

此示例演示了安全处理临时文件,并进行错误检查。

secure_tempnam.php
<?php

declare(strict_types=1);

$tempDir = sys_get_temp_dir();
if (!is_writable($tempDir)) {
    throw new RuntimeException("Temp directory not writable");
}

$tempFile = tempnam($tempDir, 'SEC_');
if ($tempFile === false) {
    throw new RuntimeException("Failed to create temp file");
}

try {
    // Use the temp file
    file_put_contents($tempFile, "Sensitive data");
    // Process the file...
} finally {
    if (file_exists($tempFile)) {
        unlink($tempFile);
    }
}

这展示了对临时文件的稳健处理,包括目录检查、错误处理和保证清理。 finally 块确保即使发生错误也会删除文件。

带有特定扩展名的临时文件

此示例通过重命名创建一个带有特定扩展名的临时文件。

temp_with_extension.php
<?php

declare(strict_types=1);

$tempFile = tempnam(sys_get_temp_dir(), 'TMP_');
$newName = $tempFile . '.txt';

if (rename($tempFile, $newName)) {
    echo "Created temp file with extension: " . $newName;
    // Remember to clean up
    unlink($newName);
} else {
    unlink($tempFile);
    echo "Failed to rename temp file";
}

我们首先创建一个临时文件,然后重命名它以添加扩展名。如果重命名失败,我们会清理原始的临时文件,以避免留下未使用的文件。

最佳实践

来源

PHP tempnam 文档

本教程介绍了 PHP tempnam 函数,并提供了实际示例,展示了如何安全地使用它来创建临时文件。

作者

我的名字是 Jan Bodnar,我是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出 所有 PHP 文件系统函数