PHP警告:模块已在第0行的Unknown中加载


74

在Mac OSX Mavericks上,每当我运行php命令时,使用自制php55,我都会收到以下错误消息(一切正常,这很烦人)

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"

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

我不确定还有什么地方可以看。

任何帮助表示赞赏


4
检查/usr/local/etc/php/5.5/conf.d/ext-intl.ini和/usr/local/etc/php/5.5/php.ini最有可能在那里不止一次。
aqq

尝试在php.ini文件中启用intl扩展名,并删除(备份)文件ext-intl.ini
ranieribt

2
我通过检查每一个的解决了这个问题.ini下的文件conf.d目录,发现有两条相同的线路extension=imagick.soimagick.ini,和我删除其中之一,它工作正常
雅美Odymel

Answers:


70

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

  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


嘿,我找不到xdebug,cli/php.ini它仍然向我显示这些错误。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
Smit Patel

在我的计算机上(使用brew安装的Mac,PHP),当我使用pecl安装xhprof时,它会自动添加extension='xhprof.so'到的顶部php.ini file。然后在处有另一个文件/usr/local/etc/php/7.2/conf.d/ext-xhprof.ini。在注释行上php.ini删除警告。
Tuhin

19

我在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)。

希望这对某人有帮助。


1
这为我在ubuntu 18.04中解决了“ mongodb”问题。我发现了类似文件的MongoDB在等/ PHP / 7.2 / Apache2的/ conf.d
穆罕默德Shihabudeen Labba一个

9

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


8

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

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

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


3

就我而言,我在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

3

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


2

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

发行版的先前版本已将此文件命名,50-geoip.ini但最新版本已更改为40-geoip.ini,我怀疑在版本升级过程中,旧的并没有删除,而新的已创建。

那是问题的实际情况。50-geoip.ini从中删除杂散/etc/php.d/并重新启动之后,httpd它就可以正常工作。


1

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


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

尽管这段代码可以解决问题,但包括解释如何以及为什么解决该问题的说明,确实可以帮助提高您的帖子质量,并可能导致更多的投票。请记住,您将来会为读者回答问题,而不仅仅是现在问的人。请编辑您的答案以添加说明,并指出适用的限制和假设。
布莱恩

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

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


0

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

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

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

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

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


0

注释掉这两行 php.ini

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

它应该解决此问题。



-1

我有一个类似的问题,问题是扩展名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服务。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.