将静态内容保存到Laravel公用文件夹中

时间:2016-06-09 09:11:13

标签: php laravel-5 static-content laravel-seeding

我无法在“公众”中存储图像。 Laravel框架的文件夹(我相信它是静态内容文件夹?如果我错了,请纠正我。)

我正在使用faker运行种子,它会生成图像并将图像URL存储在表格中。这一切都正常工作,但种子本身仍然失败,因为它似乎无法访问或找到我创建的公用文件夹中的文件夹。这是我的公用文件夹结构:

/公共/资产/图像

这是我的种子应该将我的图像保存到这个文件夹中:

<?php

use Illuminate\Database\Seeder;

class ProductsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('products')->truncate();

        $faker = Faker\Factory::create();

        $limit = 30;

        for($i = 0; $i < $limit; $i++) {
            DB::table('products')->insert([
                'title'       => $faker->name,
                'SKU'         => $faker->name,
                'description' => $faker->text,
                'created_at'  => $faker->dateTime,
                'updated_at'  => $faker->dateTime,
                'images'      => $faker->image(URL::to(Config::get('assets.images')) ,800, 600, [], [])
            ]);
        }
    }
}#

&quot; assets.images&#39;配置文件是:

<?php
    return [
        'images' => '/assets/images'   
    ];

当我尝试运行种子来填充我的数据库时,我收到以下错误:

  [InvalidArgumentException]                                       
  Cannot write to directory "http://localhost:8931/assets/images"  

我看不出我错在哪里。任何人都可以提供任何见解吗?

2 个答案:

答案 0 :(得分:2)

使用帮助函数 public_path() URL :: 的调用更改为:

$faker->image(public_path(Config::get('assets.images')) ,800, 600, [], [])

答案 1 :(得分:1)

我不是laravel专家,但抛出的异常看起来像是在尝试写入磁盘而不是磁盘上的文件路径。

也许您想检查运行php脚本的进程所有者是否具有该位置的写访问权。