Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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流\u复制\u到\u流在本地服务器上工作不正常_Php_Xmlhttprequest_Valums File Uploader - Fatal编程技术网

PHP流\u复制\u到\u流在本地服务器上工作不正常

PHP流\u复制\u到\u流在本地服务器上工作不正常,php,xmlhttprequest,valums-file-uploader,Php,Xmlhttprequest,Valums File Uploader,我正在使用Valums文件上传程序使用XHR上传文件。我使用的脚本在我的实时服务器上运行良好,而在本地服务器上失败。有关守则如下: $input = fopen("php://input", "r"); $temp = tmpfile(); $realSize = stream_copy_to_stream($input, $temp); fclose($input); if ($realSize != $this->getSize()){

我正在使用Valums文件上传程序使用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在我的本地服务器上是空的,而在我的实时服务器上它确实有一个值。因此,在本地服务器上,它在大小检查时中断。我怀疑这是一个服务器配置问题,但我不知道该查找什么。有人能给我指出正确的方向吗?

我找到了罪犯。tmpfile()无法创建临时文件,因为临时文件夹上的权限不允许写入。使用
sys\u get\u temp\u dir()
找到临时文件夹的位置,使此目录可写,所有内容都重新启动

您确定
$input
$temp
都是有效的资源吗?我不太熟悉
stream\u copy\u to\u stream
,但您的代码看起来与中的示例完全不同。
$temp
不是必须是
fopen()
的结果吗?(当然,除非这是
tmpfile()
所做的。)嗨,马特,这是来自Valums文件上传程序()的一段代码。但您质疑资源$input和$temp的有效性是正确的$temp似乎是空的,所以我将从这一点看一下。