mac > install xdebug
筆者のmac環境
macOS 10.14.5
php 7.1.23
phpize, autoconf, tarはインストール済み
PHP インストール状態確認
php -v
でインストールされていることを確認
なければ、phpの公式ページからダウンロードする
PHP.iniからxdebugのインストール方法を調べる
php -i > phpinfo.txt
でphp.iniに書かれている情報を書き出す
XDEBUG EXTENSION FOR PHPというphp.iniからxdebugのインストール状態を教えてくれるサイトにコピペする
インストール手順が表示され、書かれた内容をもとにインストールを進める
xdebugをダウンロードし、解凍する
インストールされたPHPのバージョンに合わせてxdebug(tar形式)をダウンロードする
ダウンロードされたディレクトリでファイルを解凍してもいいが、管理しやすくするためにホームディレクトリで解凍することをおすすめする
cd ~
mkdir xdebug
mv ~/Download/[ダウンロードしたxdebugファイル] ~/xdebug/
cd xdebug
tar -xvzf [ダウンロードしたxdebugファイル]
phpのextensionに拡張モジュール(xdebug)を追加する
phpize
というコマンドを使ってphpにxdebugを追加する準備をする
cd [ダウンロードしたxdebugファイル名]
phpize
環境によっては以下のエラーが発生し、正常にxdebugの準備ができない場合がある
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
この場合、Xcode commandline tools
がインストールされていないことで phpize
のアウトプットにミスが発生する可能性がある。
その時は以下のコマンドで Xcode commandline tools
をインストールする
xcode-select --install
しかし、Xcode commandline tools
がすでにインストールされているのに上記のエラーが発生している場合は、 Xcode commandline tools
を強制的に再度インストールしてみる
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
※macOSのバージョンによってはpkg名が異なる場合があるので、各自のmacOSバージョンを確認してコマンド内容を変更する
phpize
を実行すると正常に処理が終わる場合は以下のようなメッセージが表示される
ex)
phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
後は、xdebugのconfigureとビルドをすることで準備が終わる
./configure
make
xdebugをphp/extensions配下に置く
xdebugのビルドが終わると、phpの拡張機能として使える状態にする
しかし、 OS X 10.11
からmacのSIP(System Integrity Protection)によりシステムファイルを直接いじったり、変更したりすることが難しくなった
そこで SIP状態を一度無効にしてビルドした xdebug.so
を php/extensions
配下に置くことも可能だけど、 /usr/local
配下に php/extensions
を設けることでユーザが扱えるファイルシステム下に置くことで安全(?)にxdebugが使える状態とする
sudo mkdir -p /usr/local/php/extensions
sudo cp modules/xdebug.so /usr/local/php/extensions/
php.iniの設定を修正する
xdebugをphpの拡張モジュールとして使える状態にしたので、その設定情報がphpから読み込めるように php.ini
を修正する
環境によっては php.ini
ではなく、 php.ini.default
がデフォルトのセットになっている場合もあるので、一度確認をしてから php.ini
を修正する
php --ini
Configuration File (php.ini) Path: /etc <- php.iniもしくはphp.ini.defaultがあるパス
Loaded Configuration File: /etc/php.ini <- 環境によっては(none)になっている可能性もある
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
cd /etc
ls -la | grep php.ini
-r--r--r-- 1 root wheel 71484 6 19 17:51 php.ini
-r--r--r-- 1 root wheel 71175 8 18 2018 php.ini.default
# php.ini.defaultしかない場合は以下のコマンドでphp.iniを作る
cp php.ini.default php.ini
php.ini
に xdebug.so
のパスを追加する
追加するパスは XDEBUG EXTENSION FOR PHP
で php.ini
の情報をコピペした際に表示されているものを使う
# php.iniに追加
ex)
[xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebugが使えることを確認する
これにより、macのphpからxdebugが使える状態になったので、php.iniの情報が更新されていることを確認する
php -i | grep xdebug
# 以下の記述があればOK
xdebug
xdebug support => enabled
もしくは、phpのバージョンを確認して以下のような記述があればOK
ex)
php -version
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans