mkdir():权限被拒绝Laravel

use*_*181 3 php laravel

我正在为服务器中的图像上传运行以下脚本,并在以下主机上完美运行时收到以下错误。

$user_id = Auth::id();
$logicpath = 'userdp/' . $user_id . '/';
$pubpath = 'userdp/' . $user_id . '/' . $dpFile;
$path = '/userdp/' . $user_id . '/' . $dpFile;

if (!file_exists($logicpath)) {
     mkdir($logicpath, 0777, true);
}
Run Code Online (Sandbox Code Playgroud)

错误

UploadController.php第605行中的ErrorException:mkdir():权限被拒绝

在HandleExceptions-> handleError('2','mkdir():权限被拒绝','/var/www/html/laravel/app/Http/Controllers/UploadController.php','605',array('dp'= > object(UploadedFile),'ext'=>'jpg','img'=> object(Image),'mime'=>'image / jpeg','width'=>'200','height'=> '200','fileSize'=>'17152','dpFile'=>'f12f298ab18d58a59c4ed8a589cd1cdc.jpg','user_id'=>'1','logicpath'=>'userdp / 1 /','pubpath'=> 'userdp / 1 / f12f298ab18d58a59c4ed8a589cd1cdc.jpg','path'=>'/userdp/1/f12f298ab18d58a59c4ed8a589cd1cdc.jpg')

我尝试chmod 777 public并重新启动了服务器。但这没有用。

小智 6

尝试:

sudo chown -R www-data:www-data /var/www/yoursite/public
Run Code Online (Sandbox Code Playgroud)


Vas*_*aik 6

错误:

  [ErrorException]            
  mkdir(): Permission denied 
Run Code Online (Sandbox Code Playgroud)

如果您在文件夹中创建项目/WWW并且遇到上述错误,请尝试使用以下命令,它对我有用。

sudo chown -R www-data:www-data /var/www

sudo chown -R $USER:$USER /var/www
Run Code Online (Sandbox Code Playgroud)

运行此命令后,尝试再次创建项目。

cd /var/www

composer create-project laravel/laravel projectname "5.6.*"
Run Code Online (Sandbox Code Playgroud)

因为我使用的是 laravel 5.6,所以我在创建项目时指定了版本。


Geo*_*rna -13

您必须递归执行 chmod 以确保所有子目录也具有相同的权限。尝试运行这个:

chmod -R 777 
Run Code Online (Sandbox Code Playgroud)

现在,虽然这可以解决您的问题,但您绝对应该阅读设置上述权限所出现的问题,如下面评论中发布的链接所示。我也在这里发帖:

http://stackoverflow.com/a/11271632/2790481

/var/www/html/laravel/storage编辑:例如,这只能在 Laravel 存储目录中完成,而不能在系统级别完成。我最初忘记提及这一点,因此所有的反对票。

  • 小心使用此命令:[如何使用 chmod 777 服务器变得容易受到攻击](http://stackoverflow.com/a/11271632/2790481) (3认同)