tl; dr
Appleは、ヘッダーファイル/usr/include
とmacOS_SDK_headers_for_macOS_10.14.pkg
パッケージを削除することにしました。Xdebugをインストールするには、phpize
との両方で正しい参照を使用してXdebugを手動でコンパイルする必要がありmake
ます。
詳細については、問題と解決策に関するブログ記事を書きました
端的に言えば、Apple /usr/include
はMacOSカタリナをnukeすることを決めました。これは、UNIXシステムではこれまでCヘッダーファイルのデフォルトの場所でした。PEAR / PECLを使用してインストールしようとすると、コンパイラが必要なヘッダーファイルを探してエラーを返します/usr/include
。したがって、解決策は、Xdebugを手動でコンパイルし、ヘッダーファイルの実際の場所を手動で指定することです。ヘッダーファイルは、Xcodeによってまだ提供されていますが、別の場所にあります。
まず、コマンドラインツールを含め、Xcodeがインストールされていることを確認します。次のコマンドは、デフォルトSDKの場所を表示します。
$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
必要なヘッダー(php.h
)は、その中にあり/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main
ます。
ソースを取得しています
2.7.2をコンパイルして、gitからソースコードを取得します。または、Xdebugサイトからソースをダウンロードできます。
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
phpize
次にphpize
、インクルードパスを編集できるようにコピーを作成する必要があります。
cp /usr/bin/phpize .
nano ./phpize
この行を見つけます:
includedir="`eval echo ${prefix}/include`/php"
...そしてそれをこの行に置き換えます:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
実行phpize
:
./phpize
次のようなものが表示されます。
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
構成と構築
これで設定できます:
./configure --enable-xdebug
...コンパイラフラグとして定義されたカスタムSDKの場所を使用してmakeを実行します。
make CPPFLAGS='-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext/date/lib'
警告が表示される場合がありますが、今は無視してください。最後に、実行する必要があります:
make install
この場合も、拡張機能を適切な場所に移動できないため、このコマンドは失敗します。SIPはそれを防ぎます。でも心配はいりません。次のステップで手動で処理します。* .soファイルに署名するため、make installは引き続き必要です。
PHPでサポートを有効化
次に、実行可能ファイルを安全な場所に移動します。使用します/usr/local/php/extensions
。
sudo mkdir -p /usr/local/php/extensions
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /usr/local/php/extensions
次に、PHP構成を編集してXdebugを有効にします。単に編集するphp.ini
:
sudo nano /etc/php.ini
そして、我々は下部に以下を追加します:
[xdebug]
zend_extension=/usr/local/php/extensions/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
組み込みサーバーを再起動して確認します。
sudo apachectl restart
そして最後に、すべてがうまくいったかテストします:
php -i | grep "xdebug support"
上記のコマンドで何も返されない場合、Xdebugはインストールで使用できません。手順に戻り、不足しているものを見つけます。
編集
より完全な修正はphp-config --include-dir
、を返すの結果を編集することです/usr/include/php
。これにより、手動でファイルやコンパイラフラグを編集しなくても、インストールで必要なヘッダーファイルが検索されます。