After upgrading Ubuntu from 14.04 to 16.04, PHP CLI started complaining about xdebug:
将Ubuntu从14.04升级到16.04后,PHP CLI开始抱怨xdebug:
$ php -v
Cannot load Xdebug - it was already loaded
PHP 7.0.13-0ubuntu0.16.04.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.13-0ubuntu0.16.04.1, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
There is only one .ini file:
只有一个.ini文件:
$ ls -la /etc/php/7.0/cli/conf.d/ | grep xdebug
lrwxrwxrwx 1 root root 38 Jan 19 11:41 20-xdebug.ini -> /etc/php/7.0/mods-available/xdebug.ini
And it's only referenced once in this output from php -i
:
它只在php -i的输出中引用一次:
$ php -i | grep -i configuration
Cannot load Xdebug - it was already loaded
Configuration File (php.ini) Path => /etc/php/7.0/cli
Loaded Configuration File => /etc/php/7.0/cli/php.ini
Configuration
And there's only one reference to xdebug in the entire directory (so it's not being included twice):
并且在整个目录中只有一个对xdebug的引用(因此它不包含两次):
/etc/php/7.0$ grep -r xdebug *
mods-available/xdebug.ini:zend_extension=xdebug.so
mods-available/xdebug.ini:[xdebug]
mods-available/xdebug.ini:xdebug.remote_enable=1
mods-available/xdebug.ini:xdebug.remote_autostart=1
mods-available/xdebug.ini:xdebug.remote_port=9000
mods-available/xdebug.ini:xdebug.idekey=PHPSTORM
If I do $ phpdismod xdebug
I get the following output, suggesting that it still has xdebug loaded:
如果我执行$ phpdismod xdebug,我得到以下输出,表明它仍然加载了xdebug:
$ php -v
PHP 7.0.13-0ubuntu0.16.04.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.13-0ubuntu0.16.04.1, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
Having done that it is no longer present in the apache config as shown by phpinfo()
.
完成后,它不再出现在apache配置中,如phpinfo()所示。
How do I fix this?
我该如何解决?
Edit: Additional output as requested:
编辑:请求的其他输出:
$ php --ini
Cannot load Xdebug - it was already loaded
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File: /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed: /etc/php/7.0/cli/conf.d/10-mysqlnd.ini,
/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/15-xml.ini,
/etc/php/7.0/cli/conf.d/20-bcmath.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-dom.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-gd.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-mbstring.ini,
/etc/php/7.0/cli/conf.d/20-mcrypt.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-simplexml.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-wddx.ini,
/etc/php/7.0/cli/conf.d/20-xdebug.ini,
/etc/php/7.0/cli/conf.d/20-xmlreader.ini,
/etc/php/7.0/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.0/cli/conf.d/20-xsl.ini
$ cat /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
As this is still an issue I have found some further detail:
由于这仍然是一个问题,我发现了一些进一步的细节:
Paths:
$ ls -la /usr/bin/php
lrwxrwxrwx 1 root root 21 Apr 18 2017 /usr/bin/php -> /etc/alternatives/php
$ ls -la /etc/alternatives/php
lrwxrwxrwx 1 root root 15 Feb 12 15:43 /etc/alternatives/php -> /usr/bin/php7.1
php:
$ php -v
Cannot load Xdebug - it was already loaded
PHP 7.1.15-1+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Mar 6 2018 11:10:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.15-1+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
php7.1:
$ php7.1 -v
PHP 7.1.15-1+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Mar 6 2018 11:10:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.15-1+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
The interesting thing there is that the php binary is identical to php7.1 but when called as the specific it doesn't show the already loaded message.
有趣的是,php二进制文件与php7.1完全相同,但是当它被称为特定时,它不会显示已经加载的消息。
4 个解决方案
#1
6
I've fixed this by removing zend_extension=xdebug.so
as I already enabled it in my docker container with docker-php-ext-enable xdebug
. It might be that it's enabled for you as well.
我通过删除zend_extension = xdebug.so解决了这个问题,因为我已经在docker-php-ext-enable xdebug的docker容器中启用了它。它可能也是为你启用的。
#2
2
Debian and derivate:
Debian和派生:
I fixed it locating my php.ini, changing the zend_extension=xdebug.so
to the old (so I guess the same would happend commenting the line) zend_extension_ts=zdebug.so
.
我修复了它找到我的php.ini,将zend_extension = xdebug.so更改为旧的(所以我想同样会发生评论该行)zend_extension_ts = zdebug.so。
Then with: php -i | grep xdebug
there should be only one conf.d with the zend_extension=xdebug.so
. If there were more than one delete the rest of entries.
然后用:php -i | grep xdebug应该只有一个conf.d与zend_extension = xdebug.so。如果有多个条目删除其余条目。
#3
1
For users who face the same problem.
对于面临同样问题的用户。
In my scenario, it was problem with php cli
so every time I tried to get to php in the console, I was getting notice: Cannot load the ionCube PHP Loader - extension already loaded
在我的情况下,它是用PHP CLI的问题,所以我每次试图让在控制台到PHP,我得到通知:无法加载Ioncube公司PHP装载机 - 扩展已经加载
I guess it will be similar to other extensions.
我猜它会与其他扩展类似。
What I have finally done is:
我最终做的是:
cd /opt/cpanel/ea-php56/root/etc
grep -r "cube" .
# now I saw two files loading the .so files:
# ./php.d/01-ioncube.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so"
# ./php.d/pecl.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so"
mv php.d/pecl.ini .
That was it.
就是这样。
#4
0
I had the same issue and solved it by removing extra line of code zend_extension="xdebug.so"
inside php.ini file in the php folder that php --version showing, usually inside /usr/local/etc/php/
for mac users.
我有同样的问题并解决了它通过删除额外的代码行zend_extension =“xdebug.so”在PHP文件夹中的php.version文件中显示,通常在/ usr / local / etc / php / for mac用户。
#1
6
I've fixed this by removing zend_extension=xdebug.so
as I already enabled it in my docker container with docker-php-ext-enable xdebug
. It might be that it's enabled for you as well.
我通过删除zend_extension = xdebug.so解决了这个问题,因为我已经在docker-php-ext-enable xdebug的docker容器中启用了它。它可能也是为你启用的。
#2
2
Debian and derivate:
Debian和派生:
I fixed it locating my php.ini, changing the zend_extension=xdebug.so
to the old (so I guess the same would happend commenting the line) zend_extension_ts=zdebug.so
.
我修复了它找到我的php.ini,将zend_extension = xdebug.so更改为旧的(所以我想同样会发生评论该行)zend_extension_ts = zdebug.so。
Then with: php -i | grep xdebug
there should be only one conf.d with the zend_extension=xdebug.so
. If there were more than one delete the rest of entries.
然后用:php -i | grep xdebug应该只有一个conf.d与zend_extension = xdebug.so。如果有多个条目删除其余条目。
#3
1
For users who face the same problem.
对于面临同样问题的用户。
In my scenario, it was problem with php cli
so every time I tried to get to php in the console, I was getting notice: Cannot load the ionCube PHP Loader - extension already loaded
在我的情况下,它是用PHP CLI的问题,所以我每次试图让在控制台到PHP,我得到通知:无法加载Ioncube公司PHP装载机 - 扩展已经加载
I guess it will be similar to other extensions.
我猜它会与其他扩展类似。
What I have finally done is:
我最终做的是:
cd /opt/cpanel/ea-php56/root/etc
grep -r "cube" .
# now I saw two files loading the .so files:
# ./php.d/01-ioncube.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so"
# ./php.d/pecl.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so"
mv php.d/pecl.ini .
That was it.
就是这样。
#4
0
I had the same issue and solved it by removing extra line of code zend_extension="xdebug.so"
inside php.ini file in the php folder that php --version showing, usually inside /usr/local/etc/php/
for mac users.
我有同样的问题并解决了它通过删除额外的代码行zend_extension =“xdebug.so”在PHP文件夹中的php.version文件中显示,通常在/ usr / local / etc / php / for mac用户。