PHP警告:模块已在未知位置的第0行加载

109
在 Mac OSX Mavericks 上使用 Homebrew 安装的 PHP 5.5,每当我运行一个 PHP 命令时,我会收到以下错误消息(所有东西都可以正常运行,只是很烦人)。

在 Mac OSX Mavericks 上使用 Homebrew 安装的 PHP 5.5,每当我运行一个 PHP 命令时,我会收到以下错误消息(所有东西都可以正常运行,只是很烦人)

PHP Warning:  Module 'intl' already loaded in Unknown on line 0

我跑了

php --ini

输出结果为

php --ini
PHP Warning:  Module 'intl' already loaded in Unknown on line 0

Warning: Module 'intl' already loaded in Unknown on line 0
Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      /usr/local/etc/php/5.5/conf.d/ext-apcu.ini,
/usr/local/etc/php/5.5/conf.d/ext-igbinary.ini,
/usr/local/etc/php/5.5/conf.d/ext-intl.ini,
/usr/local/etc/php/5.5/conf.d/ext-memcached.ini,
/usr/local/etc/php/5.5/conf.d/ext-mongo.ini,
/usr/local/etc/php/5.5/conf.d/ext-uuid.ini,
/usr/local/etc/php/5.5/conf.d/ext-xdebug.ini

在php.ini文件中检查,只有顶部有一个注释掉的intl加载地方。其他文件内容大致如下:

extension="/usr/local/Cellar/php55/5.5.23/lib/php/extensions/no-debug-non-zts-20121212/intl.so"

最后一个斜杠后面的内容是文件扩展名。

我不确定还能从哪里查找。

感谢任何帮助。


5
请检查 /usr/local/etc/php/5.5/conf.d/ext-intl.ini 和 /usr/local/etc/php/5.5/php.ini 文件,很可能其中有重复的内容。 - AP 2022
尝试在php.ini文件中启用intl扩展并移除(备份)ext-intl.ini文件。 - ranieribt
2
我通过检查conf.d目录下的每个.ini文件解决了这个问题,并发现在imagick.ini中有两行相同的代码extension=imagick.so,我删掉了其中一行,问题得以解决。 - Yami Odymel
22个回答

1

我通过打印PHP配置并按xml.ini搜索来解决了这个问题。请注意以下输出中xml被加载了两次(首先是20-xml.ini,然后是xml.ini):

$ php -i | grep xml
/etc/php.d/20-simplexml.ini,
/etc/php.d/20-xml.ini,
/etc/php.d/20-xmlwriter.ini,
/etc/php.d/30-xmlreader.ini,
/etc/php.d/xml.ini
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
libxml Version => 2.9.1
libxml
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text /|application/xhtml\+xml)
xml
libxml2 Version => 2.9.1
xmlreader
xmlwriter
libxslt compiled against libxml Version => 2.9.1

0

在php.ini文件的872和968行中有两个“php_intl.dll”文件。如果php warning module 'intl' already loaded in unknown on line 0这条消息是针对您的CLI的。那么您应该删除第872行上的分号前缀。我希望这样做会解决问题.....


0
运行 php --ini 命令并注意 Loaded Configuration File 下的文件路径。
然后运行命令,例如 cat -n /etc/php/7.2/cli/php.ini | grep intl,查找扩展是否被注释掉了。
然后通过添加 ; 注释行来更新已加载的配置文件,例如 ;extension=intl
当您安装 php-intl 包并在 php.ini 文件中启用相同的扩展时,就会出现这种情况。

0

如果您使用的是共享主机,只需应用默认的PHP设置即可。Cpanel会覆盖PHP设置为默认设置。


这很可能是一条注释。 - user13146129

0

我在Windows 10中使用PHP 7.2.10的WAMP。我通过在wamp64\bin\php\php7.2.10中的php.ini文件中注释掉extension=ftp这一行来解决了它。

我不确定,但我猜测这是因为我的wamp64\bin\apache\apache2.4.35\bin中的php.ini已经加载了这个模块。

确保在执行此操作后重新启动WAMP的所有服务。


0

我也遇到了同样的问题,所以我注释掉了extension=mysqli,因为我包含了这个来运行SQL服务器。如果你已经取消注释了这个extension=mysqli,那么请在php.ini中加上;


0
我通过删除php.ini文件中的extension=grpc并注释掉;extension=grpc来解决了这个问题。

0

仅供记录,可能有助于其他使用共享主机(cPanel)的人。

我在共享主机php7.2上遇到了错误: Module 'imagick' already loaded in Unknown on line 0

一开始,托管提供商说这是我的错误配置(运行Yii2.16)。但是在我向他们展示了所有与互联网相关的问题都与服务器配置有关之后,他们开始听我说话。在我证明没有php7.1上的错误之后,他们开始寻找错误。

正如他们告诉我的那样-错误是由于PERL模块或PEAR包中的配置引起的,但他们没有告诉我真正的问题所在。

因此,如果您正在使用共享主机,请与您的提供商交谈并尝试使用PHP版本(如果可以更改它们)进行实验。


0

php.ini中将这两行注释掉

;extension=imagick.so
;extension="ixed.5.6.lin"

这应该可以解决问题。


0
在Windows 10中,我通过像这样注释来解决这个问题。
;extension=php_sockets.dll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接