【问题标题】:PHP Warning: Module already loaded in Unknown on line 0PHP 警告:模块已在第 0 行的未知中加载
【发布时间】:2015-12-22 06:30:11
【问题描述】:

在使用自制 php55 的 Mac OSX Mavericks 上,每当我运行 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"

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

我不知道该去哪里找。

感谢任何帮助

【问题讨论】:

  • 检查 /usr/local/etc/php/5.5/conf.d/ext-intl.ini 和 /usr/local/etc/php/5.5/php.ini 很可能它不止一次。
  • 尝试在 php.ini 文件中启用 intl 扩展并删除(备份)文件 ext-intl.ini
  • 我通过检查conf.d目录下的每个.ini文件解决了这个问题,发现imagick.ini中有两个相同的行extension=imagick.so,我删除了其中一个工作正常

标签: php configuration centos7 ini intl


【解决方案1】:

我认为您在php.ini 中可能已经加载了两次Xdebug

  1. 检查php.ini,没有设置xdebug.so 的值extension=zend_extension=

  2. 还要检查/etc/php5/apache2/etc/php5/cli/。您不应在这些目录中的每个php.ini 中加载扩展名xdebug.so。只有一个文件,php.ini 应该加载它。

    注意:路径内是字符串/etc/php5。 5是PHP的版本。所以如果你使用另一个版本,你总是会得到不同的路径,比如php7

【讨论】:

  • 嘿,我在cli/php.ini 中找不到 xdebug,但它仍然向我显示这些错误。 PHP Warning: PHP Startup: Unable to load dynamic library 'gd2' (tried: /usr/lib/php/20170718/gd2 (/usr/lib/php/20170718/gd2: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/gd2.so (/usr/lib/php/20170718/gd2.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
  • 在我的一个(mac,php安装使用brew)上,当我使用pecl安装xhprof时,它会自动在php.ini file的顶部添加extension='xhprof.so'。然后在/usr/local/etc/php/7.2/conf.d/ext-xhprof.ini 有另一个文件。注释掉 php.ini 上的行删除了警告。
【解决方案2】:

我在 mac 上遇到了同样的问题,即Warning: Module 'pdo_pgsql' already loaded in Unknown on line 0。 这是我解决它的方法。

  • 找到文件夹 conf.d,我的在目录中 /usr/local/etc/php/7.0/conf.d
  • 在此文件夹中,有一个名为ext-pdo_pgsql.ini文件
  • 输入 sudo nano ext-pdo_pgsql.ini 进行编辑。
  • 应该有一行extension="/usr/local/opt/php70-pdo-pgsql/pdo_pgsql.so"。评论它 通过在行首添加分号,即 ;extension="/usr/local/opt/php70-pdo-pgsql/pdo_pgsql.so"
  • 保存文件。 (我通常运行 control + Ocontrol + M)。
  • 退出文件(control + X)。

希望这对某人有所帮助。

【讨论】:

  • 这对我来说适用于 ubuntu 18.04 中的“mongodb”问题。我在 etc/php/7.2/apache2/conf.d 中找到了 mongodb 的类似文件
【解决方案3】:

要解决此问题,您必须编辑您的 php.ini(或 extensions.ini)文件并注释掉已编译的扩展。例如,在编辑后,您的 ini 文件可能如下所示:

;extension=pcre.so
;extension=spl.so

来源:http://www.somacon.com/p520.php

【讨论】:

    【解决方案4】:

    你应该有一个 /etc/php2/conf.d 目录(至少在 Ubuntu 上是这样),其中包含一堆 .ini 文件,这些文件都在 php 运行时被加载。这些文件可能包含与php.ini 中的设置冲突的重复设置。在我的 PHP 安装中,我注意到一个带有 extension=intl.so 设置的文件 conf.d/20-intl.ini。我敢打赌那是你的冲突。

    【讨论】:

      【解决方案5】:

      在我的例子中,我取消了 php.ini 中的 ;extension=php_curl.so 的注释,但是 Ubuntu 已经在其他地方调用了这个扩展。

      要找到这个“其他地方”,在 php.ini 上会通知。在我的情况下: /etc/php/7.1/apache2/conf.d/20-curl.ini 是路径。

      所以现在我们编辑这个文件(终端):

      sudo nano /etc/php/7.1/apache2/conf.d/20-curl.ini
      

      评论 ;extension=php_curl.so

      保存文件并重启apache:

      sudo systemctl restart apache2
      

      【讨论】:

        【解决方案6】:

        对于共享主机,我在 cPanel 中取消选中“选择 PHP 版本”>“扩展”下的相关模块,PHP 7.4 的错误消失了。

        【讨论】:

          【解决方案7】:

          Fedora Server 24 (PHP 5) 升级到 25 (PHP 7) 后我遇到了同样的问题强>。经过调查发现/etc/php.d/有两个不同的.ini文件加载extension=geoip.so

          以前版本的发行版有这个文件名为50-geoip.ini,但最近更改为40-geoip.ini,我怀疑在版本升级过程中,旧版本没有被删除,而新版本已经创建。

          这是问题的实际情况。从/etc/php.d/ 中删除流浪50-geoip.ini 并重新启动httpd 后,它完美地工作了。

          【讨论】:

            【解决方案8】:
            For issue related to code igniter project upload,
            go to the base directory index.php and add this code:
            
            if ($_SERVER['SERVER_NAME'] == 'local_server_name') {
                define('ENVIRONMENT', 'development');
            } else {
                define('ENVIRONMENT', 'production');
            }
            
            if (defined('ENVIRONMENT')){
                switch (ENVIRONMENT){
                    case 'development':
                        error_reporting(E_ALL);
                    break;
            
                    case 'testing':
                    case 'production':
                        error_reporting(0);
                    break;
            
                    default:
                        exit('The application environment is not set correctly.');
                }
            }
            
            
                define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
            

            【讨论】:

            • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
            【解决方案9】:

            我删除了 /etc/php5/cli/conf.d 中的 20-mongo.ini 文件,这解决了问题。

            【讨论】:

              【解决方案10】:

              我通过打印 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
              

              【讨论】:

                【解决方案11】:

                在 872 和 968 行的 php.ini 文件中有两个“php_intl.dll”文件。如果 php 警告模块 'intl' 已在第 0 行的未知中加载,则此消息将集中在您的 CLI 上。然后你应该删除第 872 行的半克隆前缀。我希望这会完成.....

                【讨论】:

                  【解决方案12】:

                  仅作记录,因为它可能对共享主机 (cPanel) 上的其他人有所帮助。

                  我在共享主机 php7.2 上有错误: 模块 'imagick' 已在第 0 行的 Unknown 中加载

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

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

                  因此,如果您使用的是共享主机,请与您的提供商联系并试用 PHP 版本(如果您可以更改它们)。

                  【讨论】:

                    【解决方案13】:

                    php.ini中的这两行注释掉

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

                    它应该可以解决问题。

                    【讨论】:

                      【解决方案14】:

                      在 Windows 10 中,我通过这样的评论解决了这个问题

                      ;extension=php_sockets.dll
                      

                      【讨论】:

                        【解决方案15】:

                        运行php --ini 并注意Loaded Configuration File 上的文件路径。
                        然后运行cat -n /etc/php/7.2/cli/php.ini | grep intl之类的命令来查看扩展是否被注释。
                        然后通过添加; 来更新加载的配置文件,例如;extension=intl

                        当您安装 php-intl 软件包并在 php.ini 文件上启用相同的扩展时,可能会发生这种情况。

                        【讨论】:

                          【解决方案16】:

                          如果您在共享主机上,只需应用默认的 php 设置。 Cpanel 将 php 设置覆盖为默认值。

                          【讨论】:

                          • 这可能是一条评论
                          【解决方案17】:

                          我在带有 PHP 7.2.10 的 Windows 10 中使用 WAMP。我能够通过在 wamp64\bin\php\php7.2.10 内的 php.ini 中评论 extension=ftp 行来解决它。

                          我不确定,但我猜为什么会发生这种情况是我在 wamp64\bin\apache\apache2.4.35\bin 中的 php.ini 已经加载了这个模块。

                          请务必重启 WAMP 的所有服务。

                          【讨论】:

                            【解决方案18】:

                            我遇到了同样的问题,所以我评论了extension=mysqli,因为我将它包括在内以运行 sql server。 检查你是否取消了这个 extension=mysqli 的注释 如果是,请将 ; 放在 php.ini 中

                            【讨论】:

                              【解决方案19】:

                              我通过从 extension=grpc 中删除 php.ini 文件解决了这个问题,像这样 ;extension=grpc

                              评论

                              【讨论】:

                                【解决方案20】:

                                我遇到了类似的问题,问题是扩展名 intl 重复了。

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

                                扩展必须一个才能执行,不能再次执行扩展 intl。这将显示类似“模块'intl'已加载”的错误。

                                我通过使用“;”注释掉extension=php_intl.dll 来修复它,例如;extension=php_intl.dll。并重启了apache服务。

                                【讨论】:

                                  猜你喜欢
                                  • 2016-04-10
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2016-05-25
                                  • 2016-04-14
                                  • 2016-06-06
                                  • 1970-01-01
                                  • 2016-08-09
                                  相关资源
                                  最近更新 更多