Swiftmailer - 使用未定义常量 INTL_IDNA_VARIANT_UTS46

Swiftmailer - Use of undefined constant INTL_IDNA_VARIANT_UTS46

我在使用 laravel 5.5 发送电子邮件时遇到问题,因为 swiftmailer 使用常量 INTL_IDNA_VARIANT_UTS46,但它未定义。以这个重现错误的例子为例:

if (extension_loaded('intl')) {
    echo INTL_IDNA_VARIANT_UTS46;
}
else{
    echo 'intl not loaded';
}

执行后出现以下错误:

Use of undefined constant INTL_IDNA_VARIANT_UTS46

疑难解答:

为什么 INTL_IDNA_VARIANT_UTS46 未定义?提前谢谢你。

根据ext/intl/idn/idn.c:85-87

#ifdef HAVE_46_API
REGISTER_LONG_CONSTANT("INTL_IDNA_VARIANT_UTS46", INTL_IDN_VARIANT_UTS46, CONST_CS | CONST_PERSISTENT);
#endif

常数INTL_IDNA_VARIANT_UTS46需要C常数HAVE_46_API,这需要UTS#46API:

#ifdef UIDNA_INFO_INITIALIZER
#define HAVE_46_API 1 /* has UTS#46 API (introduced in ICU 4.6) */
#endif

所以,你需要升级你的ICU。