23

mamp proでxdebugをセットアップしようとしていますが、成功しません。私はインターネット全体を検索しましたが、何も役に立ちませんでした。

まず、php.iniの次の行のコメントを解除しようとしました。

zend_extension = "/ Applications / MAMP / bin / php / php5.4.4 / lib / php / extendeds / 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

ありがとう!

4

2 に答える 2

31

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

解決しました。これが私を助けたチュートリアルです:

  1. MAMPを開始

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

    Mac osx で mamp の php.ini テンプレートを編集する

  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ファイル:

    mamp mac osxでxdebugを実行するように編集されたphp.iniファイル

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

  5. MAMPを再起動

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

    Mac osx の mamp で xdebug が実行されていることを確認する

  7. 上記と同じ設定を使用した場合、PHP コードを実行すると、Xdebug はcachegrind.outファイルを「/tmp」ディレクトリに配置します。「/temp」ディレクトリを開き、PHP ファイルの 1 つを実行して、正しく動作していることを確認します。ターミナルを開いて実行すると、ファインダーで「/ tmp」ディレクトリを開くことができます

    open /tmp
    

    Mac osx の mamp の /temp フォルダーにある cachegrind.out 出力

  8. これらの cachegrind.out ファイルを理解する任意のアプリを使用して、プロファイル データを表示できるようになりました。KCacheGrind (Linux/Windows、KDE)、WinCacheGrind (Windows)、xdebugtoolkitWebgrindなどのアプリ。私は単純な方法で、webgrind を使用しました。Webgrind は、MAMP でローカルに実行できるシンプルな Web ベースのアプリケーションで、ワンクリックで cachegrind.out ファイルを自動的に検索します。webgrind を使用したセットアップの手順に進みます。

  9. ウェブグラインドをダウンロード

  10. MAMP で Webgrind ホストをセットアップして Webgrind を実行する

    xdebug php プロファイル出力を処理するために、webgrind を mamp のホストとしてセットアップします。

  11. ローカルの MAMP インストールで webgrind url setup にアクセスします。私のは単に webgrind/

  12. すでに cachegrind 出力ファイルがある場合は、[自動 (最新)] ドロップダウンでファイルを選択するか、[自動] を選択したままにして [更新] をクリックすると、プロファイル データが表示されます。

  13. お祝いのガッツポーズを投げる

于 2012-07-23T21:36:43.653 に答える
1

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;
于 2019-06-24T14:21:56.147 に答える