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ファイルのこの行を削除することは、警告メッセージを回避するための解決策または単なる回避策ですか?これにより副作用が発生する可能性がありますか?なぜ発生するのですか/何ですか?実際に引き起こされた問題?
表示されている拡張子をphp.iniファイルに2回ロードした可能性があります。
/etc/php/7.0フォルダーを検索すると、そのサブフォルダーにphp.iniファイルがあります。おそらく次の場所にあります。
これらのphp.iniファイルでいくつかのextension = something.soが2回繰り返されている場合は、一方から削除するか、警告が両方から削除を示している場合は削除できます。
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
というサブディレクトリにさらに構成(ini)ファイルがあるはずだと告げるconf.d
を見つけました。各モジュールには、通常Linuxおよびそれ以降のバージョンのPHPで独自のiniファイルがあります。
「INIファイルのこの行を削除することは、警告メッセージを回避するための解決策ですか、それとも単なる回避策ですか?」という質問に答えるために。
正直なところ、各モジュールの構成を別々のファイルに入れるのが好きですが、conf.d
ファイルでモジュールを構成する場合は、php.ini
のファイルを削除できます。散らかっています。
PHPはモジュールを複数回ロードしています。余分なphp.ini
ファイルを見つけて削除します。
。
<?php
phpinfo();
php.ini
がどこにあるかがわかります。ディスクに移動し、名前をphp.ini.bak
に変更します。php.ini
がどこにあるかを教えてくれます。それは重複です。/etc/php5/Apache2/php.iniと/etc/php5/cli/php.iniを確認してください。このディレクトリの各php.iniに拡張子xdebug.soをロードしないでください。 1つのphp.iniのみがロードする必要があります。 PHP警告:モジュールはすでに0行目の不明にロードされています
私も同じ問題を抱えていました。 PHPバージョンを更新し、問題を解決しました。
何らかの理由で、composer.lock
ファイルのステータスが一貫していないことが原因で問題が発生しました。コンポーザーを更新した後(そしてもちろん、すべての単体テストを実行して何も壊れていないことを確認した後)、エラーはなくなり、composer runはクリーンでした。