我尝试使用以下方法创建一个包含子目录的文件夹(如果它尚不存在):
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行 at HandleExceptions-> handleError('2', 'mkdir():权限被拒绝', '/var/www/****/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', '337',数组('path'=> '/ var / www / **** / public / images \ product \ 206','mode'=> '509','递归'=>是的,'force'=>假))
在 mkdir('/ var / www / **** / public / images \ product \ 206','509', true)在Filesystem.php第337行
在 所在文件系统> makeDirectory( '/无功/网络/ **** /公共/图像\产品\ 206', “Facade.php第216行”中的“509”,真实
在 门面:: __ callStatic( 'makeDirectory', array('/ var / www / **** / public / images \ product \ 206','509', true))在ProductController.php第452行
中
错误消息使其看起来像我试图将权限设置为509
我传递的路径是:
$pathThumb = public_path('images\product\\'.$product->id.'\thumb');
检查服务器上的权限时,它会显示公共文件夹的775。
我做错了什么?
答案 0 :(得分:2)
运行php服务器的unix用户无权访问$path
的父目录。
Google搜索"permission denied" makeDirectory
shows the same。
问题出在PHP之外,因此您需要确定如何make the folder writeable like this,或者将文件放在可写入php服务器进程用户的目录中。这应该涉及您的系统管理员/ devops人员。