Cuando realizo subidas de archivos, la aplicación casca a partir del tamaño del archivo de subida.
Tengo la siguiente entidad, la cual deseo persistir en base de datos:
Código:
Como pueden ver es una entidad muy sencilla, almaceno el tamaño, path, mimetype y el usuario de la subida.<?php namespace FileBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Vich\UploaderBundle\Mapping\Annotation as Vich; /** * Description of File * * @ORM\Entity * @ORM\Table(name="archivo") * @Vich\Uploadable */ class File { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string", nullable=FALSE) * * @var string */ protected $name; /** * @ORM\Column(type="string", nullable=FALSE) * * @var string */ protected $mimeType; /** * @ORM\Column(type="string", nullable=TRUE) * * @var string */ protected $extension; /** * @ORM\Column(type="integer", nullable=TRUE) * * @var integer */ protected $size; /** * @ORM\Column(type="string", nullable=FALSE) * * @var string */ protected $path; /** * @ORM\ManyToOne(targetEntity="UserBundle\Entity\User") * @ORM\JoinColumn(name="user_id", referencedColumnName="id") * * @var UserBundle\Entity\User */ protected $user; /** * @ORM\Column(type="datetime", nullable=FALSE) * * @var \DateTime */ protected $uploadedAt; /** * @ORM\Column(type="datetime", nullable=FALSE) * * @var \DateTime */ protected $updatedAt; /** * NOTE: This is not a mapped field of entity metadata, just a simple property. * * @Vich\UploadableField(mapping="upload_file", fileNameProperty="name") * * @var \Symfony\Component\HttpFoundation\File\File */ protected $file; public function getId() { return $this->id; } /** * @return \Symfony\Component\HttpFoundation\File\File */ public function getFile() { return $this->file; } /** * @return string */ public function getName() { return $this->name; } /** * @return string */ public function getMimeType() { return $this->mimeType; } /** * @return string */ public function getExtension() { return $this->extension; } /** * @return integer */ public function getSize() { return $this->size; } /** * @return \DateTime */ public function getUploadedAt() { return $this->uploadedAt; } /** * @return \DateTime */ public function getUpdatedAt() { return $this->updatedAt; } /** * @return string */ public function getPath() { return $this->path; } /** * @return \UserBundle\Entity\User */ public function getUser() { return $this->user; } /** * If manually uploading a file (i.e. not using Symfony Form) ensure an instance * of 'UploadedFile' is injected into this setter to trigger the update. If this * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter * must be able to accept an instance of 'File' as the bundle will inject one here * during Doctrine hydration. * * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $file * * @return \FileBundle\Entity\File */ public function setFile(\Symfony\Component\HttpFoundation\File\File $file = null) { $this->file = $file; if ($file) { // It is required that at least one field changes if you are using doctrine // otherwise the event listeners won't be called and the file is lost $this->updatedAt = new \DateTime('now'); $this->uploadedAt = new \DateTime('now'); $this->extension = $file->getExtension(); $this->mimeType = $file->getMimeType(); $this->path = $file->getPath(); $this->size = $file->getSize(); } return $this; } /** * @param string $name */ public function setName($name) { $this->name = $name; } /** * @param string $mimeType */ public function setMimeType($mimeType) { $this->mimeType = $mimeType; } /** * @param string $extension */ public function setExtension($extension) { $this->extension = $extension; } /** * @param integer $size */ public function setSize($size) { $this->size = $size; } /** * @param \DateTime $uploadedAt */ public function setUploadedAt(\DateTime $uploadedAt = null) { $this->uploadedAt = $uploadedAt; } /** * @param \DateTime $updatedAt */ public function setUpdatedAt(\DateTime $updatedAt = null) { $this->updatedAt = $updatedAt; } /** * @param string $path */ public function setPath($path) { $this->path = $path; } /** * @param \UserBundle\Entity\User $user */ public function setUser(\UserBundle\Entity\User $user = null) { $this->user = $user; } }
El problema es que cuando los archivos de subida pesan a partir de 1MB se produce error:
Código:
Mi archivo php.ini:The file "" does not exist 500 Internal Server Error - FileNotFoundException
Código:
No entiendo por qué ocurre esto. Si alguien tuvo este problema, comenten, gracias por adelantado. post_max_size = 32M upload_max_filesize = 32M