PHP警告:模块已在第0行的“未知”中加载


PHP Warning: Module already loaded in Unknown on line 0

在使用自制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"

其中最后一个斜杠之后的内容是扩展名。

我不知道还能去哪里看。

感谢

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

  1. 检查尚未针对值extension=zend_extension=设置xdebug.sophp.ini

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

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

我在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(

希望这能帮助到别人。

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

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

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

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

通过注释extension=curl

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');

对于共享托管,在cPanel中,我取消了"选择PHP版本">"扩展"下的模块,PHP 7.4的错误消失了。

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之后,它完美地工作了。

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

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

php.ini文件中有两个"php_intl.dll"文件,分别位于872和968数字行。如果php警告模块'intl'已在第0行的未知中加载,则此消息将集中在CLI上。然后,您应该删除第872行的semicone前缀。我希望这能完成。。。。。

仅供记录,因为它可能会帮助共享主机(cPanel(上的其他人。

我在共享托管php7.2时出错:模块"imagick"已在第0行的未知中加载

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

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

因此,如果您使用共享托管,请与您的提供商交谈,并尝试PHP版本(如果您可以更改它们(。

php.ini 中注释掉这两行

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

它应该能解决这个问题。

在Windows 10中,我通过以下之类的注释来修复此问题

;extension=php_sockets.dll

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

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

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

我在带有PHP 7.2.10的Windows 10中使用WAMP。我可以通过在wamp64''bin''php''php7.2.10中注释php.ini中的extension=ftp行来解决这个问题。

我不确定,但我猜发生这种情况的原因是我在wamp64''bin''apache2.4.35''bin中的php.ini已经加载了这个模块。

在这样做之后,请确保重新启动WAMP的所有服务。

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

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

您可以签入文件C:''xamp/php/php.ini并找到"intl"。在我的例子中,extension=intl已经存在,我再次滚动,找到了第二个intl"extension=php_intl.dll"。

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

我通过使用类似于;extension=php_intl.dll的";"注释extension=php_intl.dll来修复它。并重新启动apache服务。