chmod():Laravel 中不允许的操作

Posted

技术标签:

【中文标题】chmod():Laravel 中不允许的操作【英文标题】:chmod(): Operation not permitted in Laravel 【发布时间】:2019-01-12 03:31:25 【问题描述】:

chmod():在本地主机的 laravel 中上传图像时不允许操作。启用 GD 库。 测试环境为 ubuntu 16.04 和 Windows 10(WSL)。

【问题讨论】:

您是否尝试过以管理员身份登录? 需要更多信息 查看堆栈跟踪,正在 chmod 的文件夹或文件可能由 webservers 守护程序用户以外的其他人拥有。 【参考方案1】:

我也遇到了同样的问题。我不知道为什么会这样,但在我的情况下运行 composer dumpautoload 为我修复了它。

【讨论】:

【参考方案2】:

验证 apache 服务用户是否有权访问您的应用程序文件夹。

试试:

chown -R www-data /var/www/laravel-project

无论www-data是运行服务apache2的用户

【讨论】:

此答案与 chmod 0777 存在相同的问题。【参考方案3】:

我在 Windows 10 上使用 Laravel 8、Docker Desktop 4.2.0(托管 Ubuntu-20.04)和 WSL2。

在我成功清理了我的 Docker 容器中的 Laravel 缓存文件后,我遇到了同样的错误

sail artisan optimize:clear

在重新提供应用程序并在我的浏览器上重新加载它时,它报告了一些文件系统错误。跟踪日志指向 Laravel 尝试执行 chmod() 命令并返回错误的行

chmod(): 不允许操作

我试过跑步

sail composer dumpautoload

在我的 Docker 容器中。该进程运行了一段时间,然后在命令行上报告了相同的chmod(): Operation not permitted错误。

这个命令拯救了我的一天:

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    composer dumpautoload

只需将它们复制并粘贴到运行您的航行命令的命令行并按 Enter 即可。在最后一个 composer 命令完成后,您现在可以访问您的应用程序,而不会 chmod() 标记错误。

警告:请备份您修改过的 Laravel 文件;特别是在运行上述命令之前,routes/web.php

更新

到了通过表单上传文件的地步,chmod(): Operation not permitted 再次弹出。该问题可能是由于通过 composer 安装多个依赖项而无意中导致目录结构/信息的更改。

此外,用于 Laravel 应用程序的 Docker 容器和 Docker 镜像由 Laravel Sail 管理。当您运行sail up 时,Sail 会为应用程序设置用户访问策略。它通过为 docker 镜像创建新用户并在应用程序启动时将它们关联到组中来实现这一点。。您可以通过运行来确认这一点:

sail artisan sail:publish

并检查应用程序根目录中生成的docker 文件夹中的 Docker 文件。 Sail 实际上使用它们来为您的应用启动新容器。

解决方案

如果您有任何接近我的设置并且遇到chmod(): Operation not permitted 错误;停止航行:

sail stop

等待所有容器停止运行,然后重新启动:

sail up

【讨论】:

以上是关于chmod():Laravel 中不允许的操作的主要内容,如果未能解决你的问题,请参考以下文章

在运行时通过 chmod 更改权限,出现“不允许操作”错误

AJAX 请求中不允许使用 Laravel 405 方法

Laravel 中不允许使用奇怪的 405 方法

预检响应中不允许 Laravel 前端到 Django 后端 x-csrf-token

标头 Laravel 5.3 + Angular2 中不允许 X-XSRF-TOKEN

PHP chmod():不允许操作,涉及安全模式弃用?