Symfony2';s HttpFoundation/File/File.php在上载文档时找不到临时文件(在MAMP中)

Symfony2';s HttpFoundation/File/File.php在上载文档时找不到临时文件(在MAMP中),php,symfony,file-upload,mamp,Php,Symfony,File Upload,Mamp,我正在本地mac上使用MAMP测试Symfony2应用程序。我正在尝试上载一个文档,但一直遇到system 500错误:“文件“/Applications/MAMP/tmp/php/[…]”不存在 这可能是我的Symfony2配置或MAMP配置的问题-我不确定是哪个。 脚本本身成功上传文件: $req = Request::createFromGlobals(); $uploadedFile = $req->files->get($file); $fi

我正在本地mac上使用MAMP测试Symfony2应用程序。我正在尝试上载一个文档,但一直遇到system 500错误:“文件“/Applications/MAMP/tmp/php/[…]”不存在

这可能是我的Symfony2配置或MAMP配置的问题-我不确定是哪个。 脚本本身成功上传文件:

$req = Request::createFromGlobals();                
$uploadedFile = $req->files->get($file);
$file = time().'_'.str_replace(' ','_',$uploadedFile->getClientOriginalName());     

if (!is_dir($this->uploads_dir))
{
    mkdir($this->uploads_dir);
}

if ($uploadedFile->move($this->uploads_dir, $file))
{
    $this->session->set('van.uploaded_file', $this->uploads_dir.$file);
}
else
{
   $this->error[] = 'upload.failed';
}
$this->uploads\u dir只是“/uploads/”,事实上,每次我运行脚本时(尽管有500个错误),我的文件都会加载到/uploads目录中

我不确定这是否重要,但上面的脚本是从服务类(而不是从控制器)运行的

我已经检查了/Applications/MAMP/tmp/php/目录,那里没有临时上传文件。(但这可能是因为它们已被移动到“我的/上传”文件夹!)

我已经将/Applications/MAMP/tmp/php/目录的权限设置为777,但仍然没有成功

我在php.ini文件中注释掉了upload_tmp_dir,但这只会为我的计算机上不同的默认目录触发相同的错误:

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).

; upload_tmp_dir = /Applications/MAMP/tmp/php
以下是Symfony错误日志中的确切错误:

CRITICAL - Uncaught PHP Exception Symfony\Component\HttpFoundation\File\Exception
\FileNotFoundException: "The file "/Applications/MAMP/tmp/php/phpYew2rT" does not exist" at 
/Applications/MAMP/htdocs/tdp2013/Symfony/vendor/symfony/symfony/src/Symfony/Component
/HttpFoundation/File/File.php line 41
还有其他想法吗

更新:

我修改了脚本,使用move_upload_文件而不是Symfony的文件组件上传文档。我收到了相同的错误-这意味着这是我的MAMP配置的问题,而不是Symfony的问题

public function upload($file_name)
{
    $this->session->remove('van.uploaded_file');

    if (!is_dir($this->uploads_dir))
    {
        mkdir($this->uploads_dir);
    }

    $file = $this->uploads_dir.time().'_'.str_replace(' ','_',$_FILES[$file_name]["name"]);
    move_uploaded_file($_FILES[$file_name]["tmp_name"], $file);

    if (file_exists($file))
    {
        $this->session->set('van.uploaded_file', $file);
    }
    else
    {
        $this->error[] = 'upload.failed';
    }
    return $this;
}
以下是我的php.ini设置:

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).

upload_tmp_dir = /Applications/MAMP/tmp/php

; Maximum allowed size for uploaded files.
upload_max_filesize = 32M

这个文件有多大?我过去也犯过类似的错误,这就是原因

我不知道mamp,但PHP通常默认有2MB的文件上传限制。 为了增加它,您需要修改php.ini中的2个设置

post_max_size = 16MB
upload_max_filesize = 16MB
当然,你可以用任何值代替16。
如果您无法或不愿意修改php.ini,您可以按照说明更改php代码中的值

文件的大小?我过去也犯过类似的错误,这就是原因

我不知道mamp,但PHP通常默认有2MB的文件上传限制。 为了增加它,您需要修改php.ini中的2个设置

post_max_size = 16MB
upload_max_filesize = 16MB
当然,你可以用任何值代替16。
如果您无法或不愿意修改php.ini,您可以更改php代码中的值,如前所述

我正在使用一个小文件(7KB)进行测试。在生产中,它会更大,但(不幸的是)这不是目前的问题。可能没有回答OP的问题,但这是我的问题。谢谢。我正在用一个7KB的小文件进行测试。在生产中,它会更大,但(不幸的是)这不是目前的问题。可能没有回答OP的问题,但这是我的问题。谢谢