web-dev-qa-db-ja.com

MAMP PROでのxdebugの設定

私はmamp proでxdebugを設定しようとしていますが、うまくいきません。私はインターネット全体を検索しましたが、何の助けにもなりませんでした。

まず、php.iniの次の行のコメントを外そうとしました。

zend_extension = "/ Applications/MAMP/bin/php/php5.4.4/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"

次に、ウィザードを試しました: http://xdebug.org/wizard.php

次に、これらの行をphp.iniに追加してみました。

xdebug.default_enable = 1

xdebug.remote_enable = 1

xdebug.remote_handler = dbgp

xdebug.remote_Host = localhost

xdebug.remote_port = 9000

xdebug.remote_autostart = 1

何も役に立ちません。 phpinfoにxdebugが表示されません。

MAMP PROバージョン:2.1.1

PHPバージョン:PHP 5.4.4

ありがとう!

22
AdamGold

MAMP 2.01のリリース 以降、XDebugはすでに含まれています。

解決しました。これが tutorial です。

  1. MAMPを起動

  2. MAMPを介してphp.iniテンプレートファイルを編集し、拡張機能を有効にします。ファイル->テンプレートの編集-> PHP-> PHP php.ini

    edit php.ini template for mamp on mac osx

  3. Php.iniテンプレートファイルの下部を編集して、プロファイル出力が必要な場合のように見えるようにします。

    [xdebug]
    zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
    xdebug.profiler_enable = 1
    xdebug.profiler_output_dir = "/tmp"
    ; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: 1
    

    プロファイル出力が不要で、xdebugを実行したいだけの場合は、

    [xdebug]
    zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
    xdebug.profiler_enable = 0
    xdebug.profiler_output_dir = "/tmp"
    ; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: 1
    

    エラーが発生した場合、エラーが標準出力に送信されると、次のようになります

    ぼくの php.iniファイル:

    edited php.ini file to run xdebug on mamp mac osx

  4. 編集したテンプレートを保存して編集ウィンドウを閉じる

  5. MAMPを再起動します

  6. MAMPのWebStartページを開き、PHPInfoタブに移動します。 Xdebugが実行されていることを確認してください。ブラウザウィンドウで「Xdebug」を検索すると、これが簡単になります。

    confirm xdebug running on mamp on mac osx

  7. 上記と同じ設定を使用した場合、PHPコードを実行すると、Xdebugはcachegrind.outファイルは ‘/ tmp’ディレクトリにあります。 「/ temp」ディレクトリを開き、PHPファイルのいずれかを実行して、正しく機能していることを確認します。ターミナルを開いて実行すると、Finderで「/ tmp」ディレクトリを開くことができます。

    open /tmp
    

    cachegrind.out output in /temp folder for mamp on mac osx

  8. これで、これらのcachegrind.outファイルを理解する任意のアプリを使用して、プロファイルデータを表示できます。 KCacheGrind (Linux/Windows、KDE)、 WinCacheGrind (Windows)、 xdebugtoolkit 、および Webgrind などのアプリ。簡単なルートでwebgrindを使いました。 Webgrindは、MAMPでローカルに実行できるシンプルなWebベースのアプリケーションで、ワンクリックで自動的にcachegrind.outファイルを探します。 webgrindでのセットアップの手順を続けます。

  9. Webgrindをダウンロード

  10. Webgrindを実行するためにMAMPでWebgrindホストをセットアップする

    Setup webgrind as Host on mamp to process xdebug php profile output

  11. ローカルMAMPインストールのwebgrind url設定にアクセスします。鉱山は単にwebgrind /

  12. Cachegrind出力ファイルが既にある場合は、「自動(最新)」ドロップダウンでファイルを選択するか、「自動」のままにして、更新をクリックしてプロファイルデータを表示することができます。

  13. お祝いの拳ポンプを投げる

29
AdamGold

MAMP Proとnginxを自分で設定するのに問題があり、上記の答えがうまくいきませんでした。

問題は、デフォルトのポート設定が9000であることでした。私の場合、そのポートはすでに使用されているため、nginx confで次の行を調べました。

location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          fastcgi_params;
        }

次に、fastcgi_passが設定されているときに見つかったファイルに移動すると、正しいポート番号が見つかります。私の場合、それはApplications/MAMP/Library/logs/fastcgiにあり、ファイル名はホストのphpバージョンに依存しています。

次にそのファイルを開き、そこにあるPIDをphp.iniのxdebug.remote_portに設定します。私にとっては13267でした。

PHPのMAMP設定はモジュールではなくCGIモードに設定されていることに言及することは価値があるかもしれません。

編集:

ポート番号が動的に変化しすぎることに気づきました。そのため、MAMPのnginxテンプレートでfastcgiパスにハードコーディングされた値を次のように設定します。

fastcgi_pass      127.0.0.1:9072;
# comment out the regular setting just in case.
# fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
1
Mina Saleeb