我有两个站点使用Codeigniter
。今天我更新了站点到Codeigniter 3.1.7
(从3.1.6
)。之后,在这个站点之一的电子邮件验证已经打破,valid_email
验证规则不再工作。在第二个站点都很好。我检查了错误日志,发现错误:
ERROR - 2018-02-06 10:13:21 --> Severity: Warning --> idn_to_ascii() expects parameter 3 to be long, string given /public_html/system/libraries/Form_validation.php 1235
Codeigniter的changlog说:
Updated Form Validation Library rule valid_email to use INTL_IDNA_VARIANT_UTS46 for non-ASCII domain names.
在我看来,INTL_IDNA_VARIANT_UTS46
常量没有定义。使用PHP Version 5.6.30
的站点
如何解决此问题?
6条答案
按热度按时间niknxzdl1#
我找到了关于这个问题的讨论here。
问题是ICU库过时(安装了ICU版本4.2.1)
fae0ux8s2#
转到system/library/email. php并替换valid_email()
gcmastyq3#
获取最新的codeigniter zip文件,然后转到系统-〉库-〉电子邮件文件,复制该电子邮件文件并将其粘贴到以前的Email.php库文件中,然后它就可以工作了
6qqygrtg4#
我认为有一个更好的方法来解决这个问题。因为我们都知道,电子邮件库不支持在php7.2,这就是为什么错误发生
idn_to_ascii():INTL_IDNA_VARIANT_2003已过时
Error Screenshot of codeigniter email library
快速解决方案:
zaqlnxep5#
对于我的情况。我也面临着这个问题。
错误:
我下载了最新的CodeIgniter版本。然后从
system/libraries
文件夹复制了Email.php
和Form_validation.php
。然后在相同的路径下替换为Existing Email.php和Form_validation.php。更换后,它是开始工作罚款..!!
感谢@Evgeny的指导。
km0tfn4u6#
当你有不兼容的CI和PHP版本组合时,就会出现上述问题。我的意思是新的PHP版本和旧的CI版本,反之亦然。我的机器上有PHP7.3,而我从github下载的CI repo/project有CI版本3.1.5。我不得不替换系统文件夹(用新的CI版本替换3.1.5的系统文件夹,在我的例子中是3.1.10)来解决这个问题