【问题标题】:Unable to write in directory Laravel无法写入目录 Laravel
【发布时间】:2018-04-30 10:43:35
【问题描述】:

在我的服务器中,我收到此错误消息

Unable to write in the "/home/company/blog/public/img" directory

当我尝试在控制器中上传这样的图像时

$file = $request->file('img');
        $name = time() . '-' . $file->getClientOriginalName();
        $file->move(public_path() .'/img/', $name);
        $company = company::where('username', $username)->first();
        $company->images()->create(['path' => "/{$name}"]);

我知道这是关于授予我尝试过的权限

chmod 755 /home/company/blog/public/img

但它仍然不起作用。

我该如何解决这个问题?

【问题讨论】:

  • 检查public_path()是否是正确的路径,打印出来给我们输出。
  • public_path() 返回/home/company/blog/public
  • 使用ls -la 列出文件夹的所有权并将该信息包含在问题中
  • img 拥有drwxr-xr-x这个权限
  • 你应该看看目录的所有者和组。

标签: php laravel permissions


【解决方案1】:

当您的服务器使用不同于您在控制台中使用的用户时,这是一种常见情况。您可以将 www-data 用于 Web 服务器,将 user 用于控制台。

755 表示所有者拥有完全权限,用户组和其他人拥有读取+执行权限 (read this)。因此,当您将chmod 755 设置为user 时,您授予user 的完全访问权限,而没有授予www-data 的写入权限。

您必须将目录的所有者更改为您服务器的用户。如果您的服务器的用户是www-data,请使用

sudo chown -R www-data:www-data /home/company/blog/public/img

【讨论】:

  • 其实我已经试过了,我的服务器用户是company,我试过sudo chown -R company:company /home/company/blog/public/img
  • 你怎么知道的? ps aux|grep nginx|grep -v grep 显示 nginx 的用户。
  • 我正在使用 apache
  • 好吧,将nginx 替换为httpd。任何。您是如何认识用户的?
  • 我尝试运行ps aux | grep -v root | grep apache | cut -d\ -f1 | sort | uniq 并得到companywww-data 所以我认为www-data 是apache 的默认用户
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 2021-06-07
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
相关资源
最近更新 更多