私は非常に奇妙な問題に直面しています。
Symfony2 と Doctrine で簡単な添付アップローダを実現しようとしています。
だから私はこのクックブック記事http://symfony.com/doc/current/cookbook/doctrine/file_uploads.htmlに従います
すべて問題ないように見えますが、140KB のファイルをアップロードしようとすると、PHP が致命的なエラーをスローします。
これは私の検証です:
/**
* @Assert\File(
* maxSize="4M",
* maxSizeMessage="Allowed maximum size is {{ limit }}"
* )
*/
public $file;
これは私のphp.iniです
memory_limit = 256M
max_input_time = 60
max_execution_time = 30
file_uploads = On
upload_max_filesize = 128M
したがって、すべて問題ないはずです。スクリプトがエラーに到達するには、約 500 ミリ秒かかる必要があります: 致命的なエラー: 268435456 バイトの許容メモリ サイズが使い果たされました (122 バイトを割り当てようとしました)
memory_limit を増やしても何も変わらず、メモリ サイズは増えますが、それでも 122 バイトを割り当てようとします。ファイルのアップロードが壊れるだけで、他のすべては完全に正常に機能します。
何が起こっていると思いますか?
編集:
はい、やった{{ form_enctype(form) }}
ので、uploadAction を投稿します。モデルは外部キーでいっぱいなので、かなり複雑です。重要ではない部分を切り取ります。
public function createAction(Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
$conference = new Conference();
$conference->setArchived(false);
$conference->setLastModification(new \DateTime());
$form = $this->createForm(new ConferenceType(), $conference);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$registrationForm = $conference->getRegistrationForm();
$em->persist($conference->getLocation());
$conference->getImage()->upload();
$em->persist($conference->getImage());
// lots of other stuff is going on (does not refer to the upload processs
$em->flush();
return $this->redirect($this->generateUrl('KnowHowERegistrationBackendBundle_registrationform_create'));
}
}
return $this->render('KnowHowERegistrationBackendBundle:Conference:create.html.twig',
array(
'form' => $form->createView(),
'conference' => $conference
));
}
誰かがそれを再現するか、解決策を見つけることができることを願っています。