17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mac > install xdebug

Posted at

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.sophp/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.inixdebug.so のパスを追加する
追加するパスは XDEBUG EXTENSION FOR PHPphp.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

参考ページ

Xdebug for Mac OS X PHP
Xdebug on macOS 10.13 with PHP 7

17
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?