现在的位置: 首页 -> PHP学习 -> 解决yii2不兼容php7的地方

解决yii2不兼容php7的地方

2017-11-03 20:27评论数 0 ⁄ 被浏览 11993 views+

1.正则不支持/e模式

如果用/e模式,会抛出以下异常信息:PHP Warning 'yii\base\ErrorException' with message 'preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead' 

in E:\project\basic\extensions\html_safe\HTML_Safe.php:356

可以改为:

$tempval = preg_replace('/&#(\d+);?/me', "chr('\\1')", $value);
//可以改为:
$tempval = preg_replace_callback('/&#(\d+);?/m', function($matches){
    return chr($matches[1]);
}, $value);


扩展阅读:用preg_replace_callback代替preg_replace中/e模式的方法


2、发送邮件报错

如果用ssl加密的端口,会报以下错误:

Exception 'Swift_TransportException' with message 'Connection could not be established with host mail.daixiaorui.com [ #0]'

解决办法:

1、将port改为25;

2、注释“encryption”。

完整配置如下:

'mailer' => array(
    'class' => 'yii\swiftmailer\Mailer',
    'transport' => array(
        'class' => 'Swift_SmtpTransport',
        'host' => 'mail.daixiaorui.com',
        'username' => 'test@daixiaorui.com',
        'password' => '************',
        'port' => '25',
//            'encryption' => 'ssl'
    ),
    'messageConfig'=>[
        'charset'=>'UTF-8',
        'from'=>['test@daixiaorui.com'=>'test']
    ]
),


3、附加一点:以下写法不支持(不过这不属于yii框架本身的问题)

$dealAfterObj->$dealCallbackAfter[1]($param);

解决办法:

//将以下
$dealAfterObj->$dealCallbackAfter[1]($param);
//改成
$dealFuncName = $dealCallbackAfter[1];
$dealAfterObj->$dealFuncName($param);


 

文章出自:https://www.daixiaorui.com/read/258.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 0 条评论  @我要评论

    您的每一个评论都是对我的一份支持

     博客二维码

    昵称 *

    邮箱 *