【问题标题】:PHP stream_copy_to_stream not working properly on local serPHP stream_copy_to_stream 在本地服务器上无法正常工作
【发布时间】:2012-08-23 15:18:56
【问题描述】:

我正在使用 Valums File Uploader 通过 XHR 上传文件。我使用的脚本在我的实时服务器上运行良好,而它在我的本地服务器上失败了。相关代码如下:

    $input = fopen("php://input", "r");   
    $temp = tmpfile();
    $realSize = stream_copy_to_stream($input, $temp);
    fclose($input);

    if ($realSize != $this->getSize()){            
        return false;
    }

    $target = fopen($path, "w");        
    fseek($temp, 0, SEEK_SET);
    stream_copy_to_stream($temp, $target);
    fclose($target);
    chmod($path, 0644);

问题是 $realSize 在我的本地服务器上是空的,而它在我的实时服务器上确实有一个值。因此,在本地服务器上,它会在大小检查时中断。我怀疑这是服务器配置问题,但我不完全知道要查找什么。有人能指出我正确的方向吗?

【问题讨论】:

  • 您确定$input$temp 都是有效资源吗?
  • 我对@9​​87654326@ 不是很熟悉,但是您的代码看起来不像manual 中的示例。 $temp 不是必须是fopen() 的结果吗? (当然,除非 tmpfile() 这样做。)
  • 嗨,Matt,这是来自 Valums 文件上传器 (valums.com/ajax-upload) 的一段工作代码。但是您质疑资源 $input 和 $temp 的有效性是正确的。 $temp 似乎是空的,所以我会从那个点看一下。

标签: php xmlhttprequest valums-file-uploader


【解决方案1】:

我找到了罪魁祸首。 tmpfile() 无法创建临时文件,因为临时文件夹的权限不允许写入。使用sys_get_temp_dir() 找到了临时文件夹的位置,使该目录可写,一切都恢复正常!

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 2017-03-31
    • 2011-11-11
    • 2013-05-21
    • 2017-06-02
    • 2014-04-13
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多