【问题标题】:laravel mkdir() Permission denied [duplicate]laravel mkdir()权限被拒绝[重复]
【发布时间】:2015-11-22 22:25:41
【问题描述】:

如果文件夹不存在,我尝试使用以下方法创建一个包含子目录的文件夹:

public function createFolderIfNotExist($path){
    //Check if the folder already exists
    if(!File::Exists($path)){
        //make folder with $path generate recursive with right 0775
        File::makeDirectory($path, 0775 , true);
    }
}

在本地运行时它工作正常(xampp),当推送到服务器时它返回

权限被拒绝

错误的第一行

在 Filesystem.php 第 337 行

在 HandleExceptions->handleError('2', 'mkdir(): 权限被拒绝', '/var/www/****/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', '337',数组('路径' => '/var/www/****/public/images\product\206', '模式' => '509', 'recursive' => true, 'force' => false))

在 mkdir('/var/www/****/public/images\product\206', '509', true) 在 Filesystem.php 第 337 行

在 文件系统->makeDirectory('/var/www/****/public/images\product\206', '509', true) 在 Facade.php 第 216 行

在 外观::__callStatic('makeDirectory', 数组('/var/www/****/public/images\product\206', '509', true)) 在 ProductController.php 第 452 行

错误消息使我看起来像是在尝试将权限设置为 509

我经过的路径是:

$pathThumb = public_path('images\product\\'.$product->id.'\thumb');

检查服务器上的权限时,它显示公用文件夹的权限为 775。

我做错了什么?

【问题讨论】:

  • 我假设您在服务器上运行 *nix。您是否检查过您的 Selinux 是否已禁用?此外,您必须为运行 apache/nginx 的组或用户设置目录所有权。如果您正在运行 apache,则必须运行 chgrp apache product -Rf:检查您的 httpd.conf 您的服务器运行的用户和组。 (授予该用户权限)。您很可能使用不同的用户进行 FTP 上传文件和使用不同的用户进行网络服务器

标签: php laravel-5


【解决方案1】:

运行php服务器的unix用户无权访问$path的父目录。

谷歌搜索"permission denied" makeDirectoryshows the same

问题出在 PHP 之外,因此您需要确定如何make the folder writeable like this,或者将文件放在对 php 服务器进程用户可写的目录中。这应该涉及您的系统管理员/开发人员。

【讨论】:

  • 来自googling results,只需忽略建议change to 777 和cmets 777 works like a charm
  • 遵循@Pathros 777 的建议可能会使自己和公司面临重大的安全风险——例如垃圾邮件发送者可能将某人的服务器用作垃圾邮件或恶意软件中继,导致公司域被列入黑名单,从而导致无法在线销售产品。
猜你喜欢
  • 2015-12-03
  • 2016-08-24
  • 2013-07-01
  • 2012-08-13
  • 1970-01-01
  • 2023-03-22
  • 2018-03-19
相关资源
最近更新 更多