PHP 致命错误:未捕获的错误:在 PHP 7.2.13 上调用未定义函数 idn_to_ascii()

Posted

技术标签:

【中文标题】PHP 致命错误:未捕获的错误:在 PHP 7.2.13 上调用未定义函数 idn_to_ascii()【英文标题】:PHP Fatal error: Uncaught Error: Call to undefined function idn_to_ascii() on PHP 7.2.13 【发布时间】:2019-06-16 06:42:08 【问题描述】:

我正在尝试在 php 7.2.13 版上使用 idn_to_ascii(),但我收到了:

Uncaught Error: Call to undefined function idn_to_ascii()

我没有安装PECL intl扩展,但是根据top user contributed note on the documentation,我不需要它:

"...if you have >=5.4 you will not require the PECL extensions. "

用户注释错了吗?如果不是,那我做错了什么?

【问题讨论】:

参见php.net/manual/en/intl.installation.php,它是捆绑的,但必须在安装时明确启用 您可能必须安装 php7-intl。该数字可能会根据您的系统和可用的软件包而有所不同。 @deceze 谢谢 - 所以用户注释是错误的? 不,这是正确的,您不需要 PECL 扩展。这并不意味着它总是自动可用。 @deceze 好的,谢谢。我知道我需要捆绑的 intl 扩展(因此不是 PECL 扩展,而是一个扩展)。但是我认为应该在某个地方明确表示我错了吗?确切的信息在哪里告诉我我需要启用 intl 扩展? 【参考方案1】:

它依赖于 PECL idn 模块和 libidn 库。无需从 PECL 安装 php-intl - 正如 php7.0-intl 提供的那样。运行 php -m 以查看已加载的模块。

在 RHEL 上可以安装所有这些:

sudo dnf install php72-php-intl.x86_64 libidn2.x86_64 
sudo pecl install idn

【讨论】:

【参考方案2】:

如果您使用的是 Ubuntu,则可以运行以下命令来安装 intl 模块,具体取决于您的 PHP 版本-

sudo apt-get install php7.0-intl

【讨论】:

我同意,但这可能只是答案的 1/3; PHP 7.2 很快就无关紧要了。【参考方案3】:

您可能需要激活“intl”php 模块。

您可以通过 cPanel 选择 PHP 版本配置,方法是检查“intl”模块并保存。

【讨论】:

以上是关于PHP 致命错误:未捕获的错误:在 PHP 7.2.13 上调用未定义函数 idn_to_ascii()的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 PHP 致命错误:未捕获的错误:在 laravel 版本更新时调用未定义的方法 Illuminate\Container\Container::basePath() 错误?

为啥我收到 PHP 致命错误:未捕获的错误:找不到类“MyClass”? [复制]

PHP 致命错误:未捕获的错误:在 PHP 7.2.13 上调用未定义函数 idn_to_ascii()

如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误

PHP“致命错误:未捕获错误:调用成员函数prepare()为null”

致命错误:未捕获的异常“异常”;需要 CURL PHP 扩展 Google_Client.php