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

exdqitrt  于 2022-12-21  发布在  PHP
关注(0)|答案(4)|浏览(328)

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

h4cxqtbf

h4cxqtbf1#

我也遇到过同样的问题,我不知道为什么会这样,但是在我的例子中,运行composer dumpautoload为我修复了这个问题。

iqih9akk

iqih9akk2#

我正在Windows 10上使用Laravel 8、Docker Desktop 4.2.0(托管Ubuntu-20.04)和WSL2。
我遇到了同样的错误后,我成功地清理了我的Docker容器中的Laravel缓存文件

sail artisan optimize:clear

在我的浏览器上重新提供应用程序并重新加载时,它报告了一些Filesystem错误。跟踪日志指向Laravel尝试执行chmod()命令并返回错误的行
chmod():不允许操作
我试着逃跑

sail composer dumpautoload

进程运行了一段时间,然后在命令行上报告了相同的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 up时,Sail会设置应用程序的用户访问策略。它通过为Docker映像创建新用户并在应用程序启动时 * 将其关联到组中来完成此操作。您可以通过运行以下命令来确认:

sail artisan sail:publish

并检查应用根目录下生成的docker文件夹中的Docker文件。它们实际上是Sail用来为应用创建新容器的。

  • 解决方案 *

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

sail stop

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

sail up
dldeef67

dldeef673#

验证Apache服务用户是否具有访问应用程序文件夹的权限。
试试看:

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

只要www-data是运行服务apache2的用户

3wabscal

3wabscal4#

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

相关问题