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个回答

0
如果您使用MacPorts安装PHP(我知道,称我为恐龙吧),它不会创建php.ini文件。相反,它会在/opt/local/var/db/php82(或您安装的其他版本)中创建一堆ini文件,这些文件也会被读取。如果您自己创建了php.ini文件,并且假设您需要添加扩展,就像任何理智的人一样,您将会看到这个错误。
这是我的安装情况。
% ll /opt/local/var/db/php82 
total 144
drwxr-xr-x  21 root  admin  672 Nov 17 07:22 .
drwxr-xr-x   5 root  wheel  160 Nov 16 19:23 ..
-rw-r--r--   1 root  admin  231 Nov 17 06:52 curl.ini
-rw-r--r--   1 root  admin  227 Nov 17 06:51 gd.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:53 gettext.ini
-rw-r--r--   1 root  admin  233 Nov 17 06:53 iconv.ini
-rw-r--r--   1 root  admin  231 Nov 17 06:56 imap.ini
-rw-r--r--   1 root  admin  231 Nov 17 06:52 intl.ini
-rw-r--r--   1 root  admin  239 Nov 17 06:55 mbstring.ini
-rw-r--r--   1 root  admin  235 Nov 17 06:57 mcrypt.ini
-rw-r--r--   1 root  admin  257 Nov 17 06:58 mysql.ini
-rw-r--r--   1 root  admin  300 Nov 17 07:02 opcache.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:58 openssl.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:58 sockets.ini
-rw-r--r--   1 root  admin  260 Nov 17 07:03 sqlite.ini
-rw-r--r--   1 root  admin  231 Nov 17 07:02 tidy.ini
-rw-r--r--   1 root  admin  298 Nov 17 07:22 xdebug.ini
-rw-r--r--   1 root  admin  235 Nov 17 06:57 xmlrpc.ini
-rw-r--r--   1 root  admin  229 Nov 17 07:02 xsl.ini
-rw-r--r--   1 root  admin  229 Nov 17 07:00 zip.ini

cat /opt/local/var/db/php82/mysql.ini
; Do not edit this file; it is automatically generated by MacPorts. Any changes
; you make will be lost if you upgrade, uninstall or deactivate php82-mysql.
; To configure php82, edit /opt/local/etc/php82/php.ini.
extension=mysqli.so
extension=pdo_mysql.so

没有 /opt/local/etc/php82/php.ini 这个文件。相反,有两个文件:php.ini-developmentphp.ini-production,你可以使用它们作为你的 php.ini 的模板。

-1

我曾经遇到过类似的问题,问题是intl扩展被重复加载了。

你可以在文件C:/xampp/php/php.ini中查找"intl"。在我的情况下,extension=intl已经存在,然后我再次滚动并找到了第二个intl "extension=php_intl.dll"。

扩展必须只能执行一个,不能再次执行intl扩展。否则会显示如下错误:"Module 'intl' already loaded"。

我通过使用";"注释掉extension=php_intl.dll来解决这个问题,像这样:;extension=php_intl.dll,然后重新启动apache服务。


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