刚才注意到,当在CLI上执行时,PHP会抛出警告:
php模块已经加载
$ php -v
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
PHP Warning: Module 'ctype' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP Warning: Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning: Module 'ftp' already loaded in Unknown on line 0
PHP Warning: Module 'gettext' already loaded in Unknown on line 0
PHP Warning: Module 'iconv' already loaded in Unknown on line 0
PHP Warning: Module 'Phar' already loaded in Unknown on line 0
PHP Warning: Module 'posix' already loaded in Unknown on line 0
PHP Warning: Module 'shmop' already loaded in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/sockets.so' - /usr/lib/php/20151012/sockets.so: undefined symbol: php_network_gethostbyname in Unknown on line 0
PHP Warning: Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning: Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning: Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning: Module 'tokenizer' already loaded in Unknown on line 0
PHP 7.0.3-5+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0RC4, Copyright (c) 2002-2016, by Derick Rethans
我知道,如何阻止它们 - 只需从extension={extname}.so
文件中删除/etc/php/7.0/cli/conf.d/{extname}.ini
即可。但是:
在INI文件中删除此行是解决方案还是只是解决方法以避免出现警告消息?由此会产生任何副作用吗?为什么会发生/实际上由什么引起的问题?
答案 0 :(得分:4)
您可能已经在php.ini文件中加载了两次显示的扩展名。
你可以搜索文件夹/etc/php/7.0,你会在其子文件夹中找到php.ini文件,最有可能是:
如果您在这些php.ini文件中看到一些 extension = something.so 重复两次,您可以将其从一个文件中删除,或者如果仍然显示从两者中删除警告。
答案 1 :(得分:3)
Linux上的PHP通常会扫描子文件夹以获取更多配置文件,这就是本案例中发生的情况。
Configuration File (php.ini) Path => /etc/php/7.0/cli Loaded
Configuration File => /etc/php/7.0/cli/php.ini Scan this dir for additional .ini files => /etc/php/7.0/cli/conf.d
Additional .ini files parsed =>
/etc/php/7.0/cli/conf.d/10-opcache.ini,
/etc/php/7.0/cli/conf.d/10-pdo.ini,
/etc/php/7.0/cli/conf.d/20-calendar.ini,
/etc/php/7.0/cli/conf.d/20-ctype.ini,
/etc/php/7.0/cli/conf.d/20-curl.ini,
/etc/php/7.0/cli/conf.d/20-exif.ini,
/etc/php/7.0/cli/conf.d/20-fileinfo.ini,
/etc/php/7.0/cli/conf.d/20-ftp.ini,
/etc/php/7.0/cli/conf.d/20-gettext.ini,
/etc/php/7.0/cli/conf.d/20-iconv.ini,
/etc/php/7.0/cli/conf.d/20-json.ini,
/etc/php/7.0/cli/conf.d/20-mcrypt.ini,
/etc/php/7.0/cli/conf.d/20-mongodb.ini,
/etc/php/7.0/cli/conf.d/20-mysqli.ini,
/etc/php/7.0/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.0/cli/conf.d/20-phar.ini,
/etc/php/7.0/cli/conf.d/20-posix.ini,
/etc/php/7.0/cli/conf.d/20-readline.ini,
/etc/php/7.0/cli/conf.d/20-shmop.ini,
/etc/php/7.0/cli/conf.d/20-sockets.ini,
/etc/php/7.0/cli/conf.d/20-sqlite3.ini,
/etc/php/7.0/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.0/cli/conf.d/20-sysvsem.ini,
/etc/php/7.0/cli/conf.d/20-sysvshm.ini,
/etc/php/7.0/cli/conf.d/20-tokenizer.ini,
/etc/php/7.0/cli/conf.d/20-xdebug.ini,
/etc/php/7.0/cli/conf.d/20-xsl.ini
通过PHP浏览文件夹/etc/php/7.0/cli/
并找到php.ini
,告诉它应该在名为conf.d
的子目录中有更多配置(ini)文件,并且每个模块都有自己的文件ini文件通常在Linux和更高版本的PHP中。
要回答“是否在INI文件中删除此行作为解决方案或只是解决方法以避免警告消息?”
老实说,我喜欢在单独的文件中为每个模块配置,但如果您希望在conf.d
文件中配置模块,则可以删除php.ini
中的文件。我发现它变得杂乱无章。
答案 2 :(得分:2)
PHP正在多次加载模块。查找并删除额外的php.ini
文件。
<?php
phpinfo();
php.ini
的位置。转到磁盘并将其重命名为php.ini.bak
。 php.ini
的位置。这是副本。 答案 3 :(得分:0)
检查/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini。你不应该在这个目录中的每个php.ini中加载扩展名xdebug.so。只有一个php.ini应该加载它。 PHP Warning: Module already loaded in Unknown on line 0
答案 4 :(得分:0)
我遇到了同样的问题。我已经更新了我的PHP版本并清除了问题。
出于某种原因,问题源于composer.lock
文件的不连贯状态。在作曲家更新之后(当然还要运行我的所有单元测试以确保没有任何内容被破坏),错误消失了,作曲家运行也很干净。
答案 5 :(得分:0)
当我使用php-mbstring
安装sudo apt-get install php-mbstring
并在extension=mbstring
中启用php.ini
时,这发生在我身上。
PHP查看两个mbstring
插件。一个在已安装的软件包中,第二个在已启用的php.ini软件包中
解决方案是禁用php.ini中的插件
;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
答案 6 :(得分:0)
只是对那些登陆此页面的人的一个提示。
答案 7 :(得分:-1)
只需从cpanel降级您的PHP版本!