У меня Laravel приложение, развернутое в Azure Kubernetes с docker. У моего приложения возникают проблемы с загрузкой файлов, когда я пытаюсь загрузить файл, я получаю эту ошибку от Laravel (показывая только часть трассировки стека):
chmod (): операция не разрешена {" userId ": 1," exception ":" [object] (ErrorException (код: 0): chmod (): операция не разрешена в / var / www/my-app/vendor/league/flysystem/src/Adapter/Local.php: 367) [stacktrace]
# 0 [ внутренняя функция]: Подсветка \ Foundation \ Bootstrap \ HandleExceptions-> handleError (2, 'chmod (): Operat ...', '/ var / www/my-app...', 367, Array)
# 1 / var / www/my-app/vendor/league/flysystem/src/Adapter/Local.php (367): chmod ('/ var / www/my-app...', 420)
Однако в моем Dockerfile у меня есть «подбитая» папка хранения:
RUN chown -R www-data:www-data \
/var/www/node-manager/storage \
/var/www/node-manager/bootstrap/cache
Я должен упомянуть, что файл загружен, но не может продолжить работу с остальным кодом из-за исключения chmod
.
В попытке отладить проблему, я запустил kubectl exec
, чтобы получить оболочку в модуль, по умолчанию он регистрируется как root. I cd
для загруженных файлов и пытается изменить права доступа как root, запустив chmod 420 nameOfFile.ext
, и это работает, поэтому я изменяю его обратно к разрешениям 777. Однако, поскольку Laravel использует apache пользователя "www-data", я запускаю su www-data -s /bin/bash
, затем пытаюсь изменить разрешение для того же файла, запустив chmod 420 nameOfFile.ext
, и я получаю эту ошибку:
chmod: изменение разрешений "nameOfFile.ext" Операция не разрешена
Так что мне остается только удивляться, работает ли '-R' в chown
только для файлов и папки, которые были непосредственно вложенным файлом или папкой. Таким образом, я переключился обратно на root пользователя, «выбив» папку, в которой находились файлы, затем переключился обратно на www-data пользователя и попытался запустить chmod
для файла, но все равно получил ту же ошибку.
[EDIT] Я также должен упомянуть, что приложение использует файловый сервис Azure в качестве постоянного тома. Поменяет ли это на справку службы BLOB-объектов?
[РЕДАКТИРОВАТЬ] Вот как выглядит мой полный Dockerfile: https://pastebin.com/zLSyfqK8
Я уже занимался этим вопросом для какое-то время, любая помощь приветствуется. Дайте мне знать, если вам нужна другая необходимая информация.