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


13

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

回答:


28

tl; dr

Appleは、ヘッダーファイル/usr/includemacOS_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。これにより、手動でファイルやコンパイラフラグを編集しなくても、インストールで必要なヘッダーファイルが検索されます。


1
最も貴重な答え!これは正しいものとしてマークする必要があります!ありがとうございます!
eltomato

あなたは
私の

これが問題を解決する最良の方法です。それは私のために働いた。ありがとう、ルイ
Raja Mohammed

1
PHP 7.4をサポートするには、XDebug 2.9(2.7.2ではない)をインストールする必要があります。ただ、続くこれらのインストール手順を以降make installこの記事の章「PHPで有効サポート」のすべてのステップを実行します。php.iniファイルが別の場所にある可能性があることに注意してください。php --ini代わりに実行されている場所を見つけて編集します。
Dejv

./configure命令まで良かったです。を取得し続けno such file or directory: ./configureます。他の誰かがこれに遭遇するか、私は幸運な人ですか?:D
cbloss793

0

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

brew reinstall php@7.3
brew link --overwrite php

おいおい。
Eric Chen

残念ながら、バージョンによっては、醸造物は期待どおりに機能しません。
jamespsterling


-2

「brew」を使用してPHPをインストールしてから、インストールされているバージョンのbrewのPHPに付属する「pecl」ツールを使用してXdebugをインストールすることをお勧めします。


それがまさに私がしたことです。peclを使用してXdebugをインストールしようとすると、上記のエラーが発生します
Guenter

1
つまり、間違ったpeclツール(Macにインストールされているツール)を取得しています。用意されている醸造液を必ず使用する必要があります。
Derick、

@Guenterそのヒントはあなたの問題を解決しましたか?同じ問題が発生しましたbrew install phpが、同じエラーが発生します。
Carter Pape、

@Derickに感謝します。これで私の問題が解決しました
Guenter

1
pecl install xdebug10.15.3未満で私のために働いた
Juanmi Sosso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.