Я настраиваю веб-сайт на Prod, и есть часть, где мне нужно импортировать файл.
Итак, у меня есть страница с формой, которая просит меня импортировать файл, и в dev это работает. Теперь проблема в том, что в среде prod, когда я отправляю форму, я получаю ошибку 500, например:
Как я могу решить эту проблему?
Редактировать:
Вот строка, которую я нашел в файле журнала:
[2020-02-19 13:26:53] request.CRITICAL: Uncaught PHP Exception Symfony\Component\HttpFoundation\File\Exception\FileException: "Unable to write in the "csv/" directory" at /var/www/html/******/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/File/File.php line 115 {"exception":"[object] (Symfony\\Component\\HttpFoundation\\File\\Exception\\FileException(code: 0): Unable to write in the \"csv/\" directory at /var/www/html/******/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/File/File.php:115)"} []
[2020-02-19 13:26:53] cache.WARNING: Failed to save key "%5BSymfony%5CBundle%5CTwigBundle%5CController%5CExceptionController%5D%5B1%5D" (array) {"key":"%5BSymfony%5CBundle%5CTwigBundle%5CController%5CExceptionController%5D%5B1%5D","type":"array","exception":"[object] (ErrorException(code: 0): file_put_contents(/var/www/html/******/var/cache/prod/pools/kdBlscBHv1/5e4d379d6cc116.53694267): failed to open stream: Permission denied at /var/www/html/******/vendor/symfony/symfony/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php:87)"} []
Вот функция, которую я использую, когда файл был отправлен и утвержден (несколько проверок достоверности):
private function uploadCsvFile($file)
{
$ext = "csv";
$originalFilename = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename);
$newFilename = $safeFilename.'-'.uniqid().'.'.$ext;
// Move the file to the directory where csv files are stored
try
{
$directory = 'csv/';
$file->move($directory, $newFilename);
return $directory.$newFilename;
}
catch (FileException $e)
{
return false;
}
}
РЕДАКТИРОВАТЬ 2:
Мне удалось решить это. Я должен был дать права на запись всем в папке (я использовал эту команду: chmod 777 my_folder )