【问题标题】:Uploaded file's tmp_name does not exist上传文件的 tmp_name 不存在
【发布时间】:2016-11-14 07:09:22
【问题描述】:

最后一天我一直在努力解决这个问题。

基本上$_FILES['logo']['tmp_name']中设置的临时文件不存在。

文件显然正在上传,如下图print_r() of $_FILES

Array
(
    [logo] => Array
        (
            [name] => Channelcat.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/php26YfhY
            [error] => 0
            [size] => 152142
        )

)

我的/tmp 目录上的文件权限显然是 777。我怀疑这个问题可能与它使用的共享主机有关。

下面基本上是我要对文件执行的操作。

$logo = $_FILES['logo'];

if($logo['size'] > (1024000)) {
    die('File size is too large.');
}

$path = __DIR__ . '/uploads/'. $logo['name'];

move_uploaded_file($logo['tmp_name'], $path);

我尝试过使用 is_uploaded_file($logo['tmp_name']),它返回 false 和 realpath($logo['tmp_name']),它返回一个空字符串。

move_uploaded_file 不会出错,但也不会将文件移动到指定目录。

【问题讨论】:

  • php26YfhY 是一个文件名。是的,文件不能有扩展名。
  • php26YfhY 是文件名,那么Channelcat.jpg 是什么??
  • @jayme_brereton $path = DIR 。 '/tmp/'。 $标志['名称'];你是什​​么路径变量输出
  • 你必须检查 php.ini 文件中的php_value upload_max_filesize 6M

标签: php upload multipart


【解决方案1】:

当您在 php.ini 文件中设置了一些 open_basedir 变量时,文件上传工作,$_FILE 数组被填充,甚至显示 tmp_name 子键,仍然没有将文件写入磁盘,这会导致令人费解的情况,因为将 error 子键设置为 0 时不会报告进一步的错误。

解决方案是将临时文件夹设置为 open_basedir php.ini 变量中的某个子文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多