chmod():不允许在Laravel中执行操作



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

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

我在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

只需将它们复制并粘贴到命令行,即可运行sail命令并点击回车键。最后一个composer命令完成后,您现在可以访问应用程序,而无需chmod()标记错误。

警告:请备份修改后的Laravel文件;尤其是routes/web.php

更新

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

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

sail artisan sail:publish

并检查应用程序根目录中生成的docker文件夹中的Docker文件。它们实际上被Sail用来为你的应用程序构建新的容器。

解决方案

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

sail stop

等待所有容器停止运行,然后将其恢复运行:

sail up

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

尝试:

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

只要www数据是运行服务apache2 的用户

我在docker和sail上运行Laravel时也遇到了同样的问题。(在windows上使用wsl(。对我来说,这个问题是通过将这个别名添加到我的linux cli中来解决的(如果你使用的是windows,可以通过安装和运行wsl命令来打开(:

alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'

然后,无论你用什么命令运行,都只需在它之前添加帆即可。像这样:

sail composer install

sail php artisan migrate

来源:Laravel Docs

最新更新