每当涉及到使用内置PHP mail()
方法时,我在Prestashop中都会收到500个内部错误。启用调试模式后,我发现原因是这样的:
((1/1)UndefinedFunctionException
试图从全局名称空间中调用函数“ idn_to_ascii”。
在Mail.php行893中
我在这个问题上用谷歌搜索,因为它很可能很常见,并被GitHub问题https://github.com/PrestaShop/PrestaShop/issues/10640击中,该问题指出需要php-intl
扩展名。
由于我使用的PHP版本是7.3,因此我通过SSH进入VPS并运行了sudo apt install php7.3-intl
。这工作正常,并安装了扩展程序。但是,像这样重新启动Apache2服务后:sudo systemctl restart apache2.service
。我仍然遇到相同的错误消息。
我曾尝试编辑/etc/php/7.3/apache2/php.ini
以便在自动加载中包含extension=intl
,但这也不能解决我的问题。
任何信息或帮助均应事先感谢。
[在另一个论坛上听取了一些建议之后,我创建了一个空白文件并输出phpinfo()
,以查看由于我的服务器上装有PHP5而默认加载了哪个PHP ini。
这告诉我正在使用php5
ini。
要将其更改为我的PHP7.3,我这样做是:
sudo a2dismod php5
sudo a2enmod php7.3
这解决了我的问题。