sjg20010414 2017-02-25 15:47:38 4029次浏览 1条回复 1 0 0

'captcha' => [

            'class' => 'yii\captcha\CaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            'height' => 50, 'width' => 80,
            'minLength' => 2, 'maxLength' => 4,
            'fontFile' => '@web/simhei.ttf'
        ],

本以为按照类似上面这样的方法就可以把验证码使用的字体从系统默认字体改为自定义的字体,但使用中发现会抛出异常,说字体文件找不到 经过调试,我发现需要fix CaptchaAction类的init()方法才行,不然方法内得到的是一个相对于文档根的路径 我的fix如下: public function init()

{
    $this->fontFile = Yii::getAlias($this->fontFile);
    $this->fontFile = $_SERVER['DOCUMENT_ROOT'].$this->fontFile;  //此行为我添加的
    if (!is_file($this->fontFile)) {
        throw new InvalidConfigException("The font file does not exist: {$this->fontFile}");
    }
}

我不清楚这个是不是bug,也不知道在非Apache的Web Server是否也是如此(我fix后的代码在windows和linux下都是工作的,但都是Apache)。 因为官网是github上反映bug的,所以,你懂的,我几乎不可能提交此问题。有没有了解此问题的朋友,或者说它是否已经被新版本fix掉了(没仔细查自己是2点几版,但应该比较新的,因为不久还 composer update过的)

您需要登录后才可以回复。登录 | 立即注册