Yii2控制台将文件写入上传目录

时间:2017-06-13 16:26:17

标签: php yii2

我正在使用带有faker的yii2控制台,这就是我在迁移代码中所拥有的

 public function safeUp()
{
    $faker = Faker\Factory::create();
    for( $i= 0; $i<20; $i++){
        $this->insert('tbl_user',array(
            'username' =>$faker->userName,
            'password_hash' => \Yii::$app->security->generatePasswordHash(5378),
            'email'=>$faker->email ,
            'status'=>10,
            'auth_key'=>Yii::$app->security->generateRandomString(),
            'created_at'=>$faker->unixTime($max = 'now'),
            'updated_at'=>$faker->unixTime($max = 'now'),
            'profile_pic'=>$faker->image(Yii::getAlias("uploads"), $width = 640, $height = 480, 'cats', false)

        ));
    }

}

问题出现在profile_pic部分,它总是抛出错误

Cannot write to directory "uploads"

我已经为文件夹上传添加了读取和写入权限,但仍然失败

通过ls -ld uploads检查权限,然后返回

drwxrwxrwx 3   //shows the read write and even execute permissions are set

可能出现什么问题?

2 个答案:

答案 0 :(得分:1)

Alias参数应该有&#34; @&#34;登录

答案 1 :(得分:1)

如果您的uploads目录位于应用程序的基本路径中,则代码应如下所示:

...
    'profile_pic'=>$faker->image(Yii::getAlias('@web/path_to/uploads'), $width = 640, $height = 480, 'cats', false)
...

您应该将别名调整到上传目录所在的位置。 在上面的示例中&#39; @ web&#39;指的是当前运行的Web应用程序的基本URL。以下是您可以使用的预定义别名列表:http://www.yiiframework.com/doc-2.0/guide-concept-aliases.html#predefined-aliases

以下是有关解决别名的更多信息:http://www.yiiframework.com/doc-2.0/guide-concept-aliases.html#resolving-aliases