title: Symfony3: "The file /tmp/php4k3bf8 could not be accessed"
body: <p>I am getting the error message "The file /tmp/php4k3bf8 could not be accessed" when uploading a file. See here the full error log.</p>
  
  <pre><code>[2017-08-13 15:50:29] request.INFO: Matched route "apply_for_job". {"route":"apply_for_job","route_parameters":{"_controller":"Vendor\\FinanceBundle\\Controller\\JobResponseController::createAction","job_id":"2850","_route":"apply_for_job"},"request_uri":"https://my.site.in/job-enrollment/open-position/2850/apply","method":"POST"} []
  [2017-08-13 15:50:29] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
  [2017-08-13 15:50:29] request.CRITICAL: Uncaught PHP Exception Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException: "The file /tmp/php4k3bf8 could not be accessed" at /mnt/hdd2/ya_guest/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php line 127 {"exception":"[object] (Symfony\\Component\\HttpFoundation\\File\\Exception\\AccessDeniedException(code: 0): The file /tmp/php4k3bf8 could not be accessed at /mnt/hdd2/ya_guest/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php:127)"} []
  </code></pre>
  
  <p>this is the entity that is used for form submission:</p>
  
  <pre><code>&lt;?php
  
  namespace Vendor\FinanceBundle\Entity;
  
  use Doctrine\Common\Collections\ArrayCollection;
  use Doctrine\ORM\Mapping as ORM;
  use Vich\UploaderBundle\Mapping\Annotation as Vich;
  use Symfony\Component\Validator\Constraints as Assert;
  use Symfony\Component\HttpFoundation\File\File;
  
  /**
   * @ORM\Entity
   * @ORM\Entity(repositoryClass="Vendor\FinanceBundle\Repository\RRFPreScreenRepository")
   * @ORM\Table(name="vendor_finance_rrf_pre_screen")
   * @Vich\Uploadable
   */
  class RRFPreScreen
  {
  
      /**
       * Unique Id
       *
       * @var integer $id
       *
       * @ORM\Column(name="id", type="integer")
       * @ORM\Id
       * @ORM\GeneratedValue(strategy="AUTO")
       */
      protected $id;
  
      ///
      /// ...
      ///
  
      /**
       * NOTE: This is not a mapped field of entity metadata, just a simple property.
       *
       * @Vich\UploadableField(mapping="profile_image_prescreen", fileNameProperty="imageName")
       *
       * @var File $imageFile
       */
      protected $imageFile;
  
      /**
       * @ORM\Column(type="string", length=255, name="profile_image", nullable=true)
       *
       * @var string $imageName
       */
      protected $imageName;
  
      /**
       * @ORM\Column(type="datetime", name="updated_at", nullable=true)
       *
       * @var \DateTime $updatedAt
       */
      protected $updatedAt;
  
      public function __construct()
      {
          $this-&gt;created = new \DateTime('now');
      }
  
      /**
       * 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 $image
       */
      public function setImageFile(File $image = null)
      {
          $this-&gt;imageFile = $image;
  
          if ($image) {
              // 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-&gt;updatedAt = new \DateTime('now');
          }
      }
  }
  </code></pre>
  
  <p>and then the form type:</p>
  
  <pre><code>&lt;?php
  
  namespace Vendor\FinanceBundle\Form\Type;
  
  use Vendor\FinanceBundle\Entity\RRFPreScreen;
  use Vendor\FormBundle\Form\Type\CountryType;
  use Vendor\FormBundle\Form\Type\EducationalQualificationType;
  use Vendor\FormBundle\Form\Type\FunctionalAreaType;
  use Vendor\FormBundle\Form\Type\MultiFileType;
  use Vendor\FormBundle\Form\Type\OtherLanguageType;
  use Vendor\FormBundle\Form\Type\ProgramHistoryType;
  use Vendor\FormBundle\Form\Type\StateIndiaType;
  use Vendor\FormBundle\Form\Type\WorkLocationType;
  use Symfony\Component\Form\AbstractType;
  use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  use Symfony\Component\Form\Extension\Core\Type\DateType;
  use Symfony\Component\Form\Extension\Core\Type\FileType;
  use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  use Symfony\Component\Form\Extension\Core\Type\NumberType;
  use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  use Symfony\Component\Form\Extension\Core\Type\TextType;
  use Symfony\Component\Form\FormBuilderInterface;
  use Symfony\Component\Form\FormEvent;
  use Symfony\Component\Form\FormEvents;
  use Symfony\Component\OptionsResolver\OptionsResolver;
  use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  use Vendor\FinanceBundle\Form\Type\RRFDocumentType;
  
  class JobResponseType extends AbstractType
  {
  
      public function buildForm(FormBuilderInterface $builder, array $options)
      {
          $self = $this;
          $factory = $builder-&gt;getFormFactory();
  
  
          $builder-&gt;addEventListener(
              FormEvents::PRE_SET_DATA,
              function(FormEvent $event) use($self, $factory, $builder) {
                  $form = $event-&gt;getForm();
                  $preScreen = $event-&gt;getData();
  
                  $form
                      -&gt;add('firstName', TextType::class, array(
                          'attr' =&gt; array('data-section' =&gt; 'Personal Details'),
                          'label_attr' =&gt; array('data-note' =&gt; 'Please provide your name as displayed in your identity proof and expand all initials'),
                      ))
                      -&gt;add('lastName', TextType::class, array())
                      -&gt;add('phone', TextType::class)
                      -&gt;add('email', TextType::class, array(
                          'label_attr' =&gt; array('data-note' =&gt; 'As we will be contacting you by mail, please double check the spelling of your mail id.')
                      ))
  
                      ///
                      /// ...
                      /// 
  
                      -&gt;add('imageFile',FileType::class, array(
                          'required' =&gt; false,
                          'label' =&gt; 'Upload your profile picture',
                      ))
                      -&gt;add('multiFiles', CollectionType::class, array(
                          'entry_type' =&gt; MultiFileType::class,
                          'allow_add' =&gt; true,
                          'allow_delete' =&gt; true,
                          'prototype' =&gt; true,
                          'prototype_name' =&gt; 'multiFiles__name__',
                          'by_reference' =&gt; false,
                          'required' =&gt; false,
                          'label' =&gt; 'Upload your CV, Cover Letter, or Certificates',
                          'label_attr' =&gt; array('class' =&gt; 'force-validation'),
                          'attr' =&gt; array('data-entry' =&gt; '1', 'data-max-entry' =&gt; '3', 'class' =&gt; 'suggested-rows col-sm-8')
                      ));
              }
          );
  
      }
  
      public function configureOptions(OptionsResolver $resolver)
      {
          $resolver-&gt;setDefaults(array(
              'data_class' =&gt; 'Vendor\FinanceBundle\Entity\RRFPreScreen',
          ));
      }
  
      public function getName() {
          return 'rrf_pre_screen1';
      }
  }
  </code></pre>
  
  <p>I am quite sure that imageFile is causing the problem, as only after I added the property to the class the error came. </p>
  
  <p>finaly the configuration for Vich in config.yml:</p>
  
  <pre><code>  vich_uploader:
    db_driver: orm
  
    mappings:
  
        profile_image_prescreen:
            uri_prefix:         /uploads/images-prescreen
            upload_destination: %kernel.root_dir%/data/uploads/images-prescreen
  
            inject_on_load:     false #should the file be injected into the uploadable entity when it is loaded from the data store
            delete_on_update:   true #should the file be deleted when a new file is uploaded
            delete_on_remove:   true #should the file be deleted when the entity is removed
  </code></pre>
  
  <p>Does anybody has an idea how this can be solved? The permissions on the /tmp folder are 777. </p>
  
  <p><strong>UPDATE:</strong></p>
  
  <p>I am running Ubuntu 14.04 and have root access to the server.</p>
  
  <p><strong>UPDATE 2</strong></p>
  
  <p>When running ls -la /tmp/, this is the output I get:</p>
  
  <pre><code>my_username@servername:~/suvya$ ls -la /tmp/
  total 4649812
  drwxrwxrwt  6 root     root          36864 Aug 17 07:44 .
  drwxr-xr-x 23 root     root           4096 Jul 19 07:14 ..
  -rw-r--r--  1 root     root     4739987837 Aug 16 23:59 data_160817.tgz
  -rw-r--r--  1 www-data www-data          6 Aug 13 20:28 dos-100.12.183.170
  -rw-r--r--  1 www-data www-data          5 Jul 21 16:04 dos-103.16.71.202
  -rw-r--r--  1 www-data www-data          6 Jul 22 09:55 dos-103.245.119.146
  -rw-r--r--  1 www-data www-data          6 Aug 14 09:14 dos-103.42.174.116
  -rw-r--r--  1 www-data www-data          6 Jul 29 17:04 dos-103.46.192.6
  -rw-r--r--  1 www-data www-data          5 Jul 28 06:24 dos-106.51.37.22
  -rw-r--r--  1 www-data www-data          6 Jul 22 09:27 dos-106.51.48.108
  -rw-r--r--  1 www-data www-data          5 Aug  4 22:42 dos-110.172.170.68
  -rw-r--r--  1 www-data www-data          6 Jul 28 02:46 dos-111.93.198.38
  -rw-r--r--  1 www-data www-data          6 Jul 21 18:47 dos-115.110.134.131
  -rw-r--r--  1 www-data www-data          5 Jul 19 15:55 dos-115.249.1.117
  -rw-r--r--  1 www-data www-data          5 Aug  7 14:54 dos-117.239.110.178
  -rw-r--r--  1 www-data www-data          6 Jul 26 09:28 dos-117.239.66.131
  -rw-r--r--  1 www-data www-data          6 Aug  9 13:19 dos-122.15.252.20
  -rw-r--r--  1 www-data www-data          6 Aug  5 11:26 dos-122.164.65.31
  -rw-r--r--  1 www-data www-data          6 Aug  1 14:16 dos-155.94.150.75
  -rw-r--r--  1 www-data www-data          6 Jul 24 12:05 dos-157.50.8.106
  -rw-r--r--  1 www-data www-data          6 Jul 24 11:22 dos-157.50.9.96
  -rw-r--r--  1 www-data www-data          6 Aug  9 22:09 dos-157.55.39.132
  -rw-r--r--  1 www-data www-data          6 Jul 30 08:52 dos-157.55.39.137
  -rw-r--r--  1 www-data www-data          6 Aug  9 22:11 dos-157.55.39.166
  -rw-r--r--  1 www-data www-data          6 Aug 10 21:28 dos-157.55.39.171
  -rw-r--r--  1 www-data www-data          6 Aug 15 22:36 dos-157.55.39.173
  -rw-r--r--  1 www-data www-data          5 Aug 12 20:15 dos-157.55.39.174
  -rw-r--r--  1 www-data www-data          6 Aug  2 22:54 dos-157.55.39.179
  -rw-r--r--  1 www-data www-data          6 Jul 23 14:50 dos-157.55.39.191
  -rw-r--r--  1 www-data www-data          6 Aug 15 22:39 dos-157.55.39.206
  -rw-r--r--  1 www-data www-data          6 Jul 28 02:17 dos-157.55.39.233
  -rw-r--r--  1 www-data www-data          6 Aug 15 22:37 dos-157.55.39.43
  -rw-r--r--  1 www-data www-data          5 Jul 30 05:18 dos-157.55.39.71
  -rw-r--r--  1 www-data www-data          5 Aug 12 20:16 dos-157.55.39.79
  -rw-r--r--  1 www-data www-data          5 Aug  5 19:22 dos-157.55.39.81
  -rw-r--r--  1 www-data www-data          6 Aug  9 22:10 dos-157.55.39.86
  -rw-r--r--  1 www-data www-data          6 Jul 28 02:16 dos-157.55.39.88
  -rw-r--r--  1 www-data www-data          5 Aug  4 22:14 dos-172.73.76.38
  -rw-r--r--  1 www-data www-data          5 Jul 28 16:56 dos-175.138.239.41
  -rw-r--r--  1 www-data www-data          6 Aug  7 08:02 dos-187.158.39.247
  -rw-r--r--  1 www-data www-data          5 Jul 27 11:06 dos-1.9.102.127
  -rw-r--r--  1 www-data www-data          6 Aug  2 23:44 dos-192.206.181.81
  -rw-r--r--  1 www-data www-data          6 Jul 27 14:39 dos-202.129.198.162
  -rw-r--r--  1 www-data www-data          5 Jul 19 11:05 dos-203.106.159.34
  -rw-r--r--  1 www-data www-data          5 Aug  1 09:24 dos-207.46.13.104
  -rw-r--r--  1 www-data www-data          6 Jul 30 08:52 dos-207.46.13.108
  -rw-r--r--  1 www-data www-data          5 Aug 12 20:18 dos-207.46.13.115
  -rw-r--r--  1 www-data www-data          6 Aug 10 21:27 dos-207.46.13.126
  -rw-r--r--  1 www-data www-data          6 Jul 23 14:48 dos-207.46.13.128
  -rw-r--r--  1 www-data www-data          5 Aug  5 19:22 dos-207.46.13.142
  -rw-r--r--  1 www-data www-data          6 Jul 30 08:53 dos-207.46.13.18
  -rw-r--r--  1 www-data www-data          5 Jul 20 18:22 dos-207.46.13.26
  -rw-r--r--  1 www-data www-data          5 Jul 20 18:22 dos-207.46.13.39
  -rw-r--r--  1 www-data www-data          6 Jul 24 11:21 dos-207.46.13.51
  -rw-r--r--  1 www-data www-data          5 Jul 20 18:23 dos-207.46.13.72
  -rw-r--r--  1 www-data www-data          6 Aug  9 22:09 dos-207.46.13.82
  -rw-r--r--  1 www-data www-data          5 Aug  1 09:24 dos-207.46.13.94
  -rw-r--r--  1 www-data www-data          5 Aug  3 05:09 dos-210.242.49.157
  -rw-r--r--  1 www-data www-data          6 Jul 19 21:59 dos-220.225.141.237
  -rw-r--r--  1 www-data www-data          6 Aug  6 15:12 dos-2.224.61.44
  -rw-r--r--  1 www-data www-data          6 Aug 15 14:19 dos-223.225.135.102
  -rw-r--r--  1 www-data www-data          5 Jul 19 23:43 dos-24.184.101.84
  -rw-r--r--  1 www-data www-data          6 Jul 20 16:14 dos-27.100.26.179
  -rw-r--r--  1 www-data www-data          6 Aug  2 18:20 dos-27.59.88.173
  -rw-r--r--  1 www-data www-data          6 Jul 28 00:34 dos-27.62.23.187
  -rw-r--r--  1 www-data www-data          6 Jul 19 18:31 dos-37.228.242.81
  -rw-r--r--  1 www-data www-data          5 Jul 27 10:00 dos-40.77.167.136
  -rw-r--r--  1 www-data www-data          6 Jul 23 14:50 dos-40.77.167.14
  -rw-r--r--  1 www-data www-data          5 Jul 21 04:44 dos-42.60.136.149
  -rw-r--r--  1 www-data www-data          6 Jul 23 08:08 dos-49.134.47.203
  -rw-r--r--  1 www-data www-data          6 Aug  4 15:26 dos-49.178.4.104
  -rw-r--r--  1 www-data www-data          6 Aug 13 20:12 dos-49.35.12.88
  -rw-r--r--  1 www-data www-data          6 Aug  2 13:14 dos-59.124.164.111
  -rw-r--r--  1 www-data www-data          6 Aug 13 07:43 dos-69.127.115.103
  -rw-r--r--  1 www-data www-data          6 Jul 29 23:56 dos-78.13.186.72
  -rw-r--r--  1 www-data www-data          6 Aug  7 10:26 dos-78.180.127.129
  -rw-r--r--  1 www-data www-data          6 Aug  6 10:29 dos-89.212.48.222
  -rw-r--r--  1 www-data www-data          6 Jul 25 17:59 dos-90.54.206.172
  -rw-r--r--  1 www-data www-data          5 Aug  6 05:54 dos-97.123.243.123
  drwxr-xr-x  2 root     root           4096 Aug 16 23:34 hsperfdata_root
  drwxrwxrwt  2 root     root           4096 Jul 19 07:14 .ICE-unix
  drwxr-xr-x  2 root     root           4096 Aug 16 23:56 webapp
  -rw-r--r--  1 root     root       21040943 Aug 16 23:56 webapp_160817.tgz
  drwxrwxrwt  2 root     root           4096 Jul 19 07:14 .X11-unix
  </code></pre>