我在 Azure Kubernetes 上使用 Docker 部署了一个 Laravel 应用程序。当我尝试上传文件时,我的应用程序出现了问题,并显示以下 Laravel 错误(仅显示部分堆栈跟踪):
我应该提到的是,文件已上传但由于
为了调试这个问题,我尝试使用
[编辑] 我还应该提到应用程序正在使用Azure文件服务作为持久卷。改为Blob服务是否有帮助?
[编辑] 这是我的完整Dockerfile:https://pastebin.com/zLSyfqK8 我已经在处理这个问题一段时间了,任何帮助都将不胜感激。如果您需要其他必要信息,请告诉我。
然而,在我的 Dockerfile 中,我已经对存储文件夹进行了 "chowned" 的操作:chmod(): 拒绝操作{"userId":1,"exception":"[object] (ErrorException(code: 0): chmod(): Operation not permitted at /var/www/my-app/vendor/league/flysystem/src/Adapter/Local.php:367) [stacktrace]
#0 [internal function]: Illuminate\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)
RUN chown -R www-data:www-data \
/var/www/my-app/storage \
/var/www/my-app/bootstrap/cache
我应该提到的是,文件已上传但由于
chmod
异常而无法继续执行代码。为了调试这个问题,我尝试使用
kubectl exec
进入pod中获取一个shell,它默认以root用户登录。我cd
到上传的文件并尝试使用root身份更改权限,通过运行chmod 420 nameOfFile.ext
实现,然后将其更改回权限777。然而,由于Laravel正在使用apache用户“www-data”,因此我运行su www-data -s /bin/bash
,然后尝试运行chmod 420 nameOfFile.ext
更改相同文件的权限,但是我收到以下错误:
所以我开始怀疑chmod: changing permissions of "nameOfFile.ext" Operation not permitted
chown
中的'-R'是否只适用于直接是子文件或文件夹的文件和文件夹。因此,我切换回root用户,“chowned”文件直接存在的文件夹,然后切换回www-data用户并尝试在文件上运行chmod
,但仍然收到相同的错误。[编辑] 我还应该提到应用程序正在使用Azure文件服务作为持久卷。改为Blob服务是否有帮助?
[编辑] 这是我的完整Dockerfile:https://pastebin.com/zLSyfqK8 我已经在处理这个问题一段时间了,任何帮助都将不胜感激。如果您需要其他必要信息,请告诉我。
dir_mode=0777
和file_mode=0777
。而且在我的pod中,我检查了www-data用户的uid
和gid
为33
。我也有mfsymlinks
。我还有nobrl,但我不确定这是否会引起问题。 - chinloyal