OS X 10.15にXdebugをインストールしようとしたところ、次の問題が発生しました。
/private/tmp/pear/install/xdebug/xdebug.c:25:10:致命的なエラー: 'php.h'ファイルが見つかりません
私はここで説明されているような問題を修正しようとしました: MacOs Mojaveへのxdebugのインストール-'php.h'ファイルが見つかりません
残念ながら、ヘッダーファイルはこのディレクトリで見つかりません:/Library/Developer/CommandLineTools/Packages
OS X 10.15の現在のヘッダーファイルを取得できるアイデアはありますか?
Appleは/usr/include
およびmacOS_SDK_headers_for_macOS_10.14.pkg
パッケージのヘッダーファイルを削除することを決定しました。 Xdebugをインストールするには、phpize
とmake
の両方で正しい参照を使用してXdebugを手動でコンパイルする必要があります。
詳細については、 問題 および 解決策についてブログ記事を書きました
要するに、Apple MacOS Catalinaの/usr/include
を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
を作成して、インクルードパスを編集できるようにする必要があります。
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が必要です。
次に、実行可能ファイルを安全な場所に移動します。 /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
の結果を編集することです。これにより、手動でファイルやコンパイラフラグを編集しなくても、インストールで必要なヘッダーファイルを見つけることができます。
Brewを使用している場合は、phpを再インストールして再リンクすることで解決します。
brew reinstall [email protected]
brew link --overwrite php
このサイトでは、すぐに使用できるパッチを含む詳細な手順を見つけることができます。 https://profilingviewer.com/installing-xdebug-on-catalina.html