xdebugをインストールする時に何回もコケたので、その時のエラーも含めて残します。
TL;DR
# apk add autoconf build-base
# pecl install xdebug
# docker-php-ext-enable xdebug
実際のdockerファイルはこちら https://github.com/ucan-lab/docker-laravel5/blob/master/docker/php/Dockerfile
環境
- php 7.3.4
- https://hub.docker.com/_/php
- 7.3.4-fpm-alpine イメージ
- xdebug 2.7.1
php バージョン
# php -v
PHP 7.3.4 (cli) (built: Apr 10 2019 00:12:43) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
xdebug をインストールの実行
xdebug をインストールを試みると Cannot find autoconf
エラーが発生しました。
# pecl install xdebug
downloading xdebug-2.7.1.tgz ...
Starting to download xdebug-2.7.1.tgz (230,653 bytes)
.................................................done: 230,653 bytes
69 source files, building
running: phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
ERROR: `phpize' failed
autoconf
パッケージが見つからないエラーです。
解決策
autoconf
をインストールする。
# apk add autoconf
(1/4) Installing m4 (1.4.18-r1)
(2/4) Installing libbz2 (1.0.6-r6)
(3/4) Installing perl (5.26.3-r0)
(4/4) Installing autoconf (2.69-r2)
Executing busybox-1.29.3-r10.trigger
OK: 108 MiB in 48 packages
autoconf
をインストールできたので再実行を試みます...。
xdebug インストールの再実行
xdebug をインストールを再度試みると no acceptable C compiler found
エラーが発生しました。
# pecl install xdebug
downloading xdebug-2.7.1.tgz ...
Starting to download xdebug-2.7.1.tgz (230,653 bytes)
.................................................done: 230,653 bytes
69 source files, building
running: phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
building in /tmp/pear/temp/pear-build-defaultuserbIEBoC/xdebug-2.7.1
running: /tmp/pear/temp/xdebug/configure --with-php-config=/usr/local/bin/php-config
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... no
checking for gcc... no
configure: error: in `/tmp/pear/temp/pear-build-defaultuserbIEBoC/xdebug-2.7.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
ERROR: `/tmp/pear/temp/xdebug/configure --with-php-config=/usr/local/bin/php-config' failed
ビルドするために必要な gcc g++ make
パッケージが足りないエラーです。
解決策1
build-base
ビルドのためのグループパッケージが用意されているので、これをインストールします。
# apk add build-base
(1/16) Installing binutils (2.31.1-r2)
(2/16) Installing libmagic (5.35-r0)
(3/16) Installing file (5.35-r0)
(4/16) Installing gmp (6.1.2-r1)
(5/16) Installing isl (0.18-r0)
(6/16) Installing libgomp (8.3.0-r0)
(7/16) Installing libatomic (8.3.0-r0)
(8/16) Installing mpfr3 (3.1.5-r1)
(9/16) Installing mpc1 (1.0.3-r1)
(10/16) Installing gcc (8.3.0-r0)
(11/16) Installing musl-dev (1.1.20-r4)
(12/16) Installing libc-dev (0.7.1-r0)
(13/16) Installing g++ (8.3.0-r0)
(14/16) Installing make (4.2.1-r2)
(15/16) Installing fortify-headers (1.0-r0)
(16/16) Installing build-base (0.5-r1)
Executing busybox-1.29.3-r10.trigger
OK: 264 MiB in 64 packages
解決策2
個別にインストールしてもok。インストールするパッケージが少ない分、個別にした方が速い。
# apk add gcc g++ make
(1/4) Installing m4 (1.4.18-r1)
(2/4) Installing libbz2 (1.0.6-r6)
(3/4) Installing perl (5.26.3-r0)
(4/4) Installing autoconf (2.69-r2)
Executing busybox-1.29.3-r10.trigger
OK: 108 MiB in 48 packages
xdebug インストールの再々実行
# pecl install xdebug
downloading xdebug-2.7.1.tgz ...
Starting to download xdebug-2.7.1.tgz (230,653 bytes)
.................................................done: 230,653 bytes
69 source files, building
running: phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
building in /tmp/pear/temp/pear-build-defaultusergcLNNb/xdebug-2.7.1
running: /tmp/pear/temp/xdebug/configure --with-php-config=/usr/local/bin/php-config
... 省略 ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.7.1
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so" to php.ini
xdebug のインストールが成功しました😊
xdebug の有効化
# docker-php-ext-enable xdebug
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/1) Installing .docker-php-ext-enable-deps (0)
OK: 259 MiB in 61 packages
(1/1) Purging .docker-php-ext-enable-deps (0)
OK: 259 MiB in 60 packages
php のバージョン確認
# php -v
PHP 7.3.4 (cli) (built: Apr 10 2019 00:12:43) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.1, Copyright (c) 2002-2019, by Derick Rethans
with Xdebug ~
がついてるのでインストール&有効化できました!