Laravel make目录因storage_path而失败

时间:2017-09-30 06:40:55

标签: php laravel laravel-5

我正在使用faker,我想生成图像并保存它们但是收到错误

mkdir(): No such file or directory

所以我有

$factory->define(App\User::class, function (Faker $faker) {
$filepath = storage_path('images/fakerusr/'); //this fails
 if(!File::exists($filepath)){
     File::makeDirectory($filepath);  
 };
return [
    'profile_pic' => $faker->image($filepath,400,300)

];

});

当我使用

时BUT
$filepath = public_path('images/fakerusr/'); //this works

但是db中保存的路径是从./var/www开始的...但是我希望公共文件夹中的图像路径。

我已将公共文件夹的读写权限添加到

sudo chmod a+rw -R /var/www.../public

我该怎么做呢。

4 个答案:

答案 0 :(得分:0)

确保图像和子目录fakerusr已存在。默认情况下,unix命令mkdir需要-p标志为"根据需要创建中间目录"并且PHP函数mkdir还要求第3个参数为true来创建嵌套目录。 File::makeDirectory也可能就是这样。

答案 1 :(得分:0)

您可以使用Storage::has

进行检查
  $directory='images/fakerusr';
    if (!Storage::has($directory)) {

       $resp= Storage::makeDirectory($directory);
       dd($resp);
    } else{
        echo "already exist";
    };

另请注意,目录将在storage\app\内创建。并确保您拥有这些文件夹的755权限

如果要在公用文件夹中创建目录

 $directory='images/fakerusr';
    if (File::isDirectory($directory)) {

       echo "already exist";
    } else{
        $result = File::makeDirectory($directory, 0775, true);
    }

答案 2 :(得分:0)

$filepath = storage_path('images/fakerusr/'); //this fails
        if(!File::exists($filepath)){
            File::makeDirectory($filepath, 0755, true, true);
        };

答案 3 :(得分:0)

我正在使用“是否检查目录是否存在并使目录公开”。

use Illuminate\Http\File;

$path = public_path('upload/imgaes');

if(!File::isDirectory($path)){
    File::makeDirectory($path, 0777, true, true);
}
  

希望这项工作