web-dev-qa-db-ja.com

MacOS Catalina 10.15へのXdebugのインストール

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の現在のヘッダーファイルを取得できるアイデアはありますか?

13
Guenter

tl; dr

Appleは/usr/includeおよびmacOS_SDK_headers_for_macOS_10.14.pkgパッケージのヘッダーファイルを削除することを決定しました。 Xdebugをインストールするには、phpizemakeの両方で正しい参照を使用して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

次に、コピー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の結果を編集することです。これにより、手動でファイルやコンパイラフラグを編集しなくても、インストールで必要なヘッダーファイルを見つけることができます。

22
Louis Charette

Brewを使用している場合は、phpを再インストールして再リンクすることで解決します。

brew reinstall [email protected]
brew link --overwrite php
0
jamespsterling

このサイトでは、すぐに使用できるパッチを含む詳細な手順を見つけることができます。 https://profilingviewer.com/installing-xdebug-on-catalina.html

0
user24525