Symfony 2 – UploadedFile, метод переноса не удалось – невозможно создать каталог …

Я изучаю Symfony 2, и у меня проблемы с классом UploadedFile. Я хочу обрабатывать загрузку файлов в своем проекте, поэтому я узнал, благодаря официальной документации: как обрабатывать загрузки файлов с помощью Doctrine

Он работает очень хорошо. Тем не менее, он работает только на местном уровне. Я использую MAMP для тестирования моего проекта.

Я попытался поместить свой проект на сервер Debian 6. Приложение Symfony работает, но файл загрузки не работает. Когда я перемещаю файл с помощью метода move () … У меня есть эта ошибка:

Unable to create the "/var/www/project/Symfony/src/project/Bundle/AlbumBundle/Entity/../../../../../web/images/postes_images" directory (500 Internal Server Error) 

Как я уже говорил, он отлично работает на местном уровне. Если папка postes_images не существует, она должна создаваться сама по себе. Он хорошо работает в местном …

Это моя функция загрузки:

 public function upload($indexPoste, $indexPic) { if (null === $this->file) { return; } $this->name = "poste_".$indexPoste."_pic_".$indexPic; $this->path = "poste_".$indexPoste."_pic_".$indexPic.".".$this->file->getClientOriginalExtension(); $this->file->move($this->getUploadRootDir(), $this->path); $this->file = null; } 

Функции для получения путей:

 public function getUploadRootDir() { return __DIR__.'/../../../../../web/'.$this->getUploadDir(); } protected function getUploadDir() { return 'images/postes_images'; } 

Пути верны, потому что они хорошо работают в локальном режиме. Мне интересно, если это не проблема настройки php … Я сделал несколько поисков, и я прочитал, что в методе перемещения они называют метод «mkdir» для создания папки, если она не существует … Если mkdir call возвращает false, он возвращает ошибку, которую я поставил выше.

Если у вас есть идея, как решить эту проблему, пожалуйста. Я ничего не мог найти.

благодаря

Solutions Collecting From Web of "Symfony 2 – UploadedFile, метод переноса не удалось – невозможно создать каталог …"

Если вы используете Debian, ваш веб-пользователь должен быть www-data . Поэтому вам нужно убедиться, что у этого пользователя есть разрешение на запись в ваш каталог web/images . Это может потребовать доступа root или sudo, в зависимости от ваших прав пользователя. Но запустите эту команду, чтобы предоставить доступ к www-данным:

 chown -R www-data /var/www/project/Symfony/web/images 

Это позволит пользователю www-data владеть каталогом и создавать дополнительные каталоги (при условии, что у владельца есть права на запись). Если вы не в курсе разрешений, прочитайте вики-версию Debian Permission, чтобы понять больше.