したがって、macOS High Sierra 10.13にはPHP 7.1。が付属しています。Apacheの設定中に、_/etc/php.ini
_ファイルから新しい_/etc/php.ini.default
_も作成しました。 PHP Apacheの再起動後にロードされますが、macOS 10.13に同梱されているXdebug拡張機能のバージョンは、phpinfo();
を実行してもロードまたは表示されないようです
私のphp.iniは確実に読み込まれています:
_$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
_
Xdebugを構成する/etc/php.iniは次のようになります。
_[xdebug]
zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20160303/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
_
[更新、ここでのタイプミスを修正...]
ただし、Xdebugは読み込まれず、_php -i
_をチェックしても結果は得られません。
_$php -i | grep xdebug
PHP Warning: Method xdebug_start_function_monitor() cannot be a NULL
function in Unknown on line 0
PHP Warning: xdebug: Unable to register functions, unable to load in Unknown on line 0
Segmentation fault: 11
_
そして、はい、ファイルへのパスは正しいです:
_$ ls /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so*
_
これはかつてPHP 5で機能していたので、誰かがこの問題に取り組んでいる将来、私や他の人を助けることができることを願っています。
Apacheログを確認すると、次のエラーが発生します。
_Failed loading /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so: dlopen(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so, 9): Symbol not found: _xdebug_monitored_function_dtor
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Expected in: flat namespace
in /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
_
私はこのエラーを解決する方法を見つけるという点で進歩していません:
_Symbol not found: _xdebug_monitored_function_dtor
_
わかりましたので、ようやく自分で実行できました。 macOS High Sierraに付属するxdebugバイナリ(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
の下にある)は、PHP7の新しいZendエンジンと互換性がないと想定しています。
そのため、最新のソースを xdebug Webサイト からダウンロードし、次のようにしました。
phpize
を実行して、新しいZendエンジンのビルドを構成します。./configure
を実行しますmake
を実行します現在、新しいバイナリはmodules/xdebug.so
の下にあります
ただし、macOSシステム整合性保護(SIP)では、xdebug.so
の下の/usr/lib/php/extensions/
を上書きできません。これを無効にしたくなかったので、/usr/local/lib/php/extensions/
の下に新しいディレクトリパスを作成し、新しいバイナリをこの場所にコピーしました。このディレクトリがそれを置くのに最適な場所であるかどうか、またはこれが悪い習慣であるかどうかはわかりませんが、私にとってはうまくいきました。
最後に、新しいバイナリを使用するようにphp.iniを再構成し、すべてが完全に機能しました!
これをインストールするには、xcodeコマンドラインツールが必要です。
したがって、実行する必要があります:
xcode-select --install
次に、autoconfをインストールする必要があります。
brew install autoconf
次に、 コードをここからダウンロードする必要があります。 その後、ソースコードのフォルダーで実行する必要があります:
phpize
./configure
make
Sudo cp modules/xdebug.so /usr/local/php/extensions
(ディレクトリが存在しない場合は作成してください)そして最後にphp.iniの中に追加
zend_extension=/usr/local/php/extensions/xdebug.so
その後、php.ini内でxdebugを有効にしてApacheを再起動できます
Sudo apachectl restart
あなたは「zend_extention」にタイプミスをしました。これはzend_extensionである必要があります。フルパスは不要だと思いますzend_extension = xdebug.soで十分です
複数のPHPバージョン、つまりMac OS X mojave上の7.1、7.2、および7.3のバージョンでbrewをインストールした場合、以下を実行できます。
Brew brew install autoconf
を使用してautoconfをインストールします。
PHP Xdebugをインストールしたいバージョンに変更し、brew unlink [email protected] && brew link --force --overwrite php
を実行します。これにより、PHP 7.1からPHP 7.3。
xdebug Webサイトから最新のXdebugソースをダウンロードします。
Xdebug tarを抽出し、抽出されたディレクトリに移動します。そこにすべてのファイルが表示されます。
phpize
を実行して、新しいZendエンジンのビルドを構成します。
./configure
を実行します。
make
を実行します。
Xdebug拡張機能xdebug.so
はmodules
ディレクトリにコンパイルされます。
/usr/local/lib/php/7.3.1/extensions/
の下に新しいディレクトリパスを作成し、xdebug.so
をこの場所にコピーします。ここで、7.3.1
は以前に切り替えた現在のバージョンです。これを変更して、PHPバージョンに一致させます。
エディターでphp.ini
を開き、zend_extension="/usr/local/lib/php/7.3.1/extensions/xdebug.so"
と入力して変更を保存します。
php -v
を実行すると、Xdebugが正しく構成されていることが示されます。
別のPHPバージョンでXdebugを構成する場合は、手順2から11まで繰り返します。前の投稿で述べたように、この方法では、システム整合性を無効/有効にする必要はありません。 Mac OS Xでの保護。
このパーティーに遅れて到着した人にとって、質問の最初の試みはmacOS 10.13.6でうまく機能するようです
MacにxDebugをインストールしようとしてエラーが発生した皆さん、こんにちは。
エラー:不明なタイプ名 'uint64_t'
このエラーの原因となるファイルがlocal/bin/includeにあります。それらを削除することで、エラーを取り除くことができます。ただし、醸造を再インストールする必要がある場合があります。