AzureのAppServiceにPHPのXDebugをインストールする

1. App Serviceの作成

ランタイムスタックを PHP にして App Service を作成する。

create webapp
図 1. AppServiceの作成
PHP 7.4 では下記のエラーでインストール出来ませんでした

2. XDebugのインストール

SSHコンソールを開く

ssh
図 2. SSH

インストール

# pecl install xdebug

Cannot load Zend OPcache - it was already loaded
downloading xdebug-3.0.0.tgz ...
Starting to download xdebug-3.0.0.tgz (190,176 bytes)
.........................................done: 190,176 bytes
86 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-rootxp9Zj9/xdebug-3.0.0
 :
 :
 :
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so'
install ok: channel://pecl.php.net/xdebug-3.0.0
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

.so ファイルを置くディレクトリを作り、ビルドされた redis.so をコピーする。

/home 配下に作成すること
# mkdir /home/site/ext
# cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /home/site/ext/
# ls -al /home/site/ext/
total 2080
drwxrwxrwx 2 nobody nogroup       0 Nov 27 21:06 .
drwxrwxrwx 2 nobody nogroup       0 Nov 27 21:06 ..
-rwxrwxrwx 1 nobody nogroup 2127368 Nov 27 21:06 xdebug.so

ini ファイルを置くディレクトリを作る。

こちらも /home 配下に作成すること
# mkdir /home/site/ini

extensions.ini ファイルを作成して、zend_extension=/home/site/ext/xdebug.so を書き込む。

# touch /home/site/ini/extensions.ini
# echo 'zend_extension=/home/site/ext/xdebug.so' >> /home/site/ini/extensions.ini

3. AppServiceの設定

[構成]メニューのアプリケーション設定にある「新しいアプリケションを選択」を選ぶ。

app setting
図 3. アプリケーション設定
  • 名前 : PHP_INI_SCAN_DIR

  • 値 : /usr/local/etc/php/conf.d:/home/site/ini

として追加する。

setting ini scan dir
図 4. PHP_INI_SCAN_DIR設定

変更を保存する。

save setting
図 5. 保存

App Service が再起動して反映される。

# php -i|grep xdebug
Cannot load Zend OPcache - it was already loaded
xdebug
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
xdebug.auto_trace => This setting has been changed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-"xdebug.auto_trace" => This setting has been changed, see
the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-"xdebug.auto_trace"
xdebug.cli_color => 0 => 0
xdebug.client_discovery_header => no value => no value
xdebug.client_host => localhost => localhost
xdebug.client_port => 9003 => 9003
xdebug.cloud_id => no value => no value
xdebug.collect_assignments => Off => Off
xdebug.collect_includes => This setting has been removed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#removed-"xdebug.collect_includes" => This setting has been r
emoved, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#removed-"xdebug.collect_includes"
 :
 :
 :

4. PHP7.4でのエラー

ランタイムスタックをphp7.4にした時に pecl install xdebug で出たエラー

creating libtool
appending configuration tag "CXX" to libtool
configure: patching config.h.in
configure: creating ./config.status
config.status: creating config.h
running: make
Makefile:228: warning: overriding recipe for target 'test'
Makefile:132: warning: ignoring old recipe for target 'test'
/bin/bash /tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/libtool --mode=compile cc   -I. -I/tmp/pear/temp/xdebug -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/
include -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/main -I/tmp/pear/temp/xdebug -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/lo
cal/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/tmp/pear/temp/xdebug/src -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/src  -DHAVE_CON
FIG_H  -g -O2   -c /tmp/pear/temp/xdebug/xdebug.c -o xdebug.lo
 cc -I. -I/tmp/pear/temp/xdebug -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/include -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/main -I/tmp/pear/temp/xd
ebug -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/
lib -I/tmp/pear/temp/xdebug/src -I/tmp/pear/temp/pear-build-rootH5iTFx/xdebug-3.0.0/src -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/xdebug/xdebug.c  -fPIC -DPIC -o .libs/xdebug.o
/tmp/pear/temp/xdebug/xdebug.c:22:10: fatal error: config.h: No such file or directory
 #include "config.h"
          ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:232: xdebug.lo] Error 1
ERROR: `make' failed