2

私は非常に奇妙な問題に直面しています。

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
            ));
    }

誰かがそれを再現するか、解決策を見つけることができることを願っています。

4

1 に答える 1

0

本当に何も飛び出さない。これは厳密にはトラブルシューティングのような答えです。

次の行をコメントアウトすることから始めます。

            $conference->getImage()->upload();
            $em->persist($conference->getImage());

他のすべてが機能していることを確認します。そして、完全なエラーメッセージを投稿してください。そこに手がかりがあるかもしれません。

于 2012-04-05T18:55:11.157 に答える