2015-11-22 211 views
2

我试试下面的方法来创建一个文件夹与它的subdirectorys如果它不存在:laravel的mkdir()权限被拒绝

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); 
    } 
} 

在运行时localy它工作正常(XAMPP),当推到服务器它返回

权限被拒绝

错误的第一线

在Filesystem.php管线337

在HandleExceptions->的HandleError

( '2', 'MKDIR():权限被拒绝', “/无功/网络/ **** /供应商/ laravel/framework/src/Illuminate/Filesystem/Filesystem.php', '337',array('path'=> '/ var/www/****/public/images \ product \ 206','mode'= > '509', '递归'=>为真, '力'=>假))

在 MKDIR( '/无功/网络/ **** /公共/图像\产品\ 206',' 509', true)在Filesystem.php行337

在 所在文件系统> makeDirectory在Facade.php线( '/无功/网络/ **** /公共/图像\产品\ 206', '509',真)216

门面

在 :: __ callStatic在ProductController.php线( 'makeDirectory', 阵列( '/无功/网络/ **** /公共/图像\产品\ 206', '509', 真))452

错误消息使它看起来像试图将权限设置为509

路径th在我通过的是:

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

当检查服务器上的许可证时,它说775为公用文件夹。

enter image description here

我在做什么错?

+1

我假设你在服务器上运行* nix。你有没有检查你的Selinux是否被禁用? 此外,您必须将目录所有权设置为您的apache/nginx运行的组或用户。您必须运行 chgrp apache产品-Rf 如果您正在运行apache:请检查httpd.conf中您的服务器运行的用户和组。 (给予该用户许可)。 它很可能是您使用不同的FTP用户上传文件和不同的用户的Web服务器 – TrueStory

回答

2

运行php服务器的unix用户没有权限访问$path上的父目录。

使用谷歌搜索"permission denied" makeDirectoryshows the same

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