web-dev-qa-db-ja.com

PHP 7を使用したmacOS 10.13上のXdebug

したがって、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
_
12
Gerard de Jong

わかりましたので、ようやく自分で実行できました。 macOS High Sierraに付属するxdebugバイナリ(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.soの下にある)は、PHP7の新しいZendエンジンと互換性がないと想定しています。

そのため、最新のソースを xdebug Webサイト からダウンロードし、次のようにしました。

  1. Brewでautoconfをインストールしました。
  2. phpizeを実行して、新しいZendエンジンのビルドを構成します。
  3. ./configureを実行します
  4. makeを実行します

現在、新しいバイナリはmodules/xdebug.soの下にあります

ただし、macOSシステム整合性保護(SIP)では、xdebug.soの下の/usr/lib/php/extensions/を上書きできません。これを無効にしたくなかったので、/usr/local/lib/php/extensions/の下に新しいディレクトリパスを作成し、新しいバイナリをこの場所にコピーしました。このディレクトリがそれを置くのに最適な場所であるかどうか、またはこれが悪い習慣であるかどうかはわかりませんが、私にとってはうまくいきました。

最後に、新しいバイナリを使用するようにphp.iniを再構成し、すべてが完全に機能しました!

19
Gerard de Jong

これをインストールするには、xcodeコマンドラインツールが必要です。

したがって、実行する必要があります:

xcode-select --install

次に、autoconfをインストールする必要があります。

brew install autoconf

次に、 コードをここからダウンロードする必要があります。 その後、ソースコードのフォルダーで実行する必要があります:

  1. phpize
  2. ./configure
  3. make
  4. 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で十分です

4
user24525

複数のPHPバージョン、つまりMac OS X mojave上の7.1、7.2、および7.3のバージョンでbrewをインストールした場合、以下を実行できます。

  1. Brew brew install autoconfを使用してautoconfをインストールします。

  2. PHP Xdebugをインストールしたいバージョンに変更し、brew unlink [email protected] && brew link --force --overwrite phpを実行します。これにより、PHP 7.1からPHP 7.3。

  3. xdebug Webサイトから最新のXdebugソースをダウンロードします。

  4. Xdebug tarを抽出し、抽出されたディレクトリに移動します。そこにすべてのファイルが表示されます。

  5. phpizeを実行して、新しいZendエンジンのビルドを構成します。

  6. ./configureを実行します。

  7. makeを実行します。

  8. Xdebug拡張機能xdebug.somodulesディレクトリにコンパイルされます。

  9. /usr/local/lib/php/7.3.1/extensions/の下に新しいディレクトリパスを作成し、xdebug.soをこの場所にコピーします。ここで、7.3.1は以前に切り替えた現在のバージョンです。これを変更して、PHPバージョンに一致させます。

  10. エディターでphp.iniを開き、zend_extension="/usr/local/lib/php/7.3.1/extensions/xdebug.so"と入力して変更を保存します。

  11. php -vを実行すると、Xdebugが正しく構成されていることが示されます。

別のPHPバージョンでXdebugを構成する場合は、手順2から11まで繰り返します。前の投稿で述べたように、この方法では、システム整合性を無効/有効にする必要はありません。 Mac OS Xでの保護。

0
Asrar

このパーティーに遅れて到着した人にとって、質問の最初の試みはmacOS 10.13.6でうまく機能するようです

0
Fuzzy76

MacにxDebugをインストールしようとしてエラーが発生した皆さん、こんにちは。

エラー:不明なタイプ名 'uint64_t'

このエラーの原因となるファイルがlocal/bin/includeにあります。それらを削除することで、エラーを取り除くことができます。ただし、醸造を再インストールする必要がある場合があります。

https://github.com/cython/cython/issues/2009

0
jenel