PHP | tempnam 函数

Lasted 2021-01-25 16:42:13

tempnam 函数创建一个具有唯一文件名的文件。

tempnam() 函数在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在,会在系统临时目录中生成一个文件,并返回其文件名。成功后返回文件名。

函数定义

tempnam ( string $dir , string $prefix ) : string
// 源文件位于:ext/standard/file.c
# 函数定义

PHP_FUNCTION(tempnam)
{
  char *dir, *prefix;
  size_t dir_len, prefix_len;
  zend_string *opened_path;
  int fd;
  zend_string *p;

  ZEND_PARSE_PARAMETERS_START(2, 2)
    Z_PARAM_PATH(dir, dir_len)
    Z_PARAM_PATH(prefix, prefix_len)
  ZEND_PARSE_PARAMETERS_END();

  if (php_check_open_basedir(dir)) {
    RETURN_FALSE;
  }

  p = php_basename(prefix, prefix_len, NULL, 0);
  if (ZSTR_LEN(p) > 64) {
    ZSTR_VAL(p)[63] = '\0';
  }

  RETVAL_FALSE;

  if ((fd = php_open_temporary_fd_ex(dir, ZSTR_VAL(p), &opened_path, 1)) >= 0) {
    close(fd);
    RETVAL_STR(opened_path);
  }
  zend_string_release_ex(p, 0);
}

参数

  • checkdir -文件的目录。
  • checkprefix -文件的前缀。

返回值

  • checkbool - 成功时返回新的临时文件名,失败时返回 false。

示例1: - 使用 tempnam() 函数创建一个具有唯一文件名的文件。

<?php
/**
 * PHP tempnam() 函数创建一个具有唯一文件名的文件
 *
 * @since Version 1.0.0
 * @filesource
 */

// 创建临时文件
$tmpname = tempnam("foo", "foo");

echo 'FileName::'.$tmpname.PHP_EOL;
FileName::/tmp/fooDpcbeP
注意:因为 foo 目录不存在,系统自动在 /tmp 目录下创建了文件。