15

そのため、macOS High Sierra 10.13 には PHP 7.1 が付属しています。/etc/php.iniApache の構成中に、ファイルから新しい/etc/php.ini.defaultファイルも作成し、Apache の再起動後に PHP によってロードされていることを確認しましたが、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
4

6 に答える 6

4

「zend_extention」でタイプミスをしました。これは zend_extension である必要があります。フルパスは不要だと思います zend_extension=xdebug.so で十分なはずです

于 2017-10-05T22:24:59.320 に答える
2

複数の PHP バージョン、つまり Mac OS X mojave で 7.1、7.2、および 7.3 とともに brew をインストールしている場合は、次の操作を実行できます。

  1. brew で autoconf をインストールしますbrew install autoconf

  2. Xdebug が必要な PHP バージョンに変更し、brew unlink php@7.1 && 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.soにコンパイルされます。modules

  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 でシステム整合性保護を無効/有効にする必要はありません。

于 2019-10-19T22:53:02.347 に答える
0

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

エラー: 不明な型名 'uint64_t'

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

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

于 2019-04-26T11:35:30.597 に答える