[英]Symfony2's HttpFoundation/File/File.php cannot find temporary file when uploading a document (in MAMP)
我在本地Mac上使用MAMP來測試Symfony2應用程序。 我正在嘗試上載文檔,但繼續遇到系統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_dir只是'/ uploads /',實際上,每次我運行腳本時(盡管有500個錯誤),我的文件都被加載到/ uploads目錄中。
我不確定是否很重要,但是上面的腳本是從服務類(而不是從控制器)運行的。
我已經檢查了/ Applications / MAMP / tmp / php /目錄,並且那里沒有臨時上傳文件。 (但這可能是因為它們已移至我的/ uploads文件夾!)
我已經將/ 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_uploaded_file而不是Symfony的File組件上載文檔。 我收到了相同的錯誤-這是我的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代碼值作為解釋這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.