Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以通过PHP上传一个文件,并带有特定的;tmp_name;?_Php - Fatal编程技术网

有没有一种方法可以通过PHP上传一个文件,并带有特定的;tmp_name;?

有没有一种方法可以通过PHP上传一个文件,并带有特定的;tmp_name;?,php,Php,通过PHP上传文件时,解释器的默认行为是将文件保存在临时文件夹中,并使用临时名称 然后我们必须使用函数移动上传的文件()才能永久保存它 如果我可以访问php代码-是否有办法跳过移动上传的文件()阶段?是和否。您可以指定将临时文件放入哪个目录,但不能自己决定临时名称 发件人: 默认情况下,文件将存储在服务器的默认临时目录中,除非php.ini中的upload_tmp_dir指令提供了另一个位置 因此,您可以设置: 进行文件上载时用于存储文件的临时目录。必须可由运行PHP的任何用户写入。如果未指定,

通过PHP上传文件时,解释器的默认行为是将文件保存在临时文件夹中,并使用临时名称

然后我们必须使用函数
移动上传的文件()
才能永久保存它


如果我可以访问php代码-是否有办法跳过移动上传的文件()阶段?

是和否。您可以指定将临时文件放入哪个目录,但不能自己决定临时名称

发件人:

默认情况下,文件将存储在服务器的默认临时目录中,除非php.ini中的upload_tmp_dir指令提供了另一个位置

因此,您可以设置:

进行文件上载时用于存储文件的临时目录。必须可由运行PHP的任何用户写入。如果未指定,PHP将使用系统的默认值

如果此处指定的目录不可写,PHP将返回系统默认的临时目录。如果open_basedir处于启用状态,则必须允许系统默认目录才能成功上载

然而,这仅仅决定了目录,而不是文件名本身

我认为有相当充分的理由可以解释为什么你不能这么做:

  • 并发性:您如何知道多个用户/多个进程是否试图写入应用程序逻辑决定的同一文件名?如果处理方式不同,这将导致很多比赛条件
  • 根据您的操作系统和文件名转义,根据用户输入或应用程序逻辑命名文件也可能会带来巨大的安全风险。例如,可以尝试在基于Linux的系统上覆盖密码文件
    /etc/shadow
    ,并连接到系统访问

  • 此外,我个人并不认为在
    move\u uploaded\u file()
    中使用这个过程会很麻烦。

    答案很好!谢谢