xdebugを使用してdockerでphpコードをデバッグし、xdebug構成のクイックスタートチュートリアル、および構成とデバッグ中の一般的な落とし穴の解決策を使用します。

xdebugを使用してdockerでphpコードの構成をデバッグすることと、xdebugを使用してローカルコードまたはリモートサーバー上のコードの構成をデバッグすることには違いがあります。次のチュートリアルでは、xdebugを使用してdockerでコードをデバッグする方法をすばやく説明します。ピットを回避するのに役立ちます。

前提条件:Dockerのコードは、正常に実行およびアクセスできます。

1.xdbugにxdebugをインストールします。

非常棒的安转指导网址: https://xdebug.org/wizard.php   ,这是个非常棒的安装指导网站,只要按照上面一步一步走都能成功安装的,缺点就是都是英文,本文着重讲怎么配置. 怎么安装的其实那个网站已经列得很详细也很简单, 大致步骤就是:将echo phpinfo();输出的整个内容复制到该网站中,该网站会解析你的phpinfo信息,并提供合适xdebug给你下载,你下载xdebug后解压并执行make && make install, 此时就会生成个xdebug.so文件, 然后在php.ini文件中引入该文件即是安转成功.

2. xdebug構成(この記事では紹介に焦点を当てます)

 2.1 docker]で、php構成ファイルphp.iniを入力し、次の構成を追加します。 

;引入xdebug扩展
zend_extension="/usr/local/php7/lib/php/20170718/xdebug.so"
;开启远程调试
xdebug.remote_enable=1
;据说connect_back开启会有问题
;xdebug.remote_connect_back=1
;关键配置.该地址为你宿主机(也就是你电脑)的ip地址
xdebug.remote_host=192.168.43.219
xdebug.remote_handler=dbgp
;xdebug.remote_mode="req"
;关键.端口可以自己设置但是注意要选择没被占用的.后面phpstormde的prot要填写这个端口号
xdebug.remote_port=9050
;后面phpstorm的idekey的值要和这个一样
xdebug.idekey=PHPSTORM
xdebug.remote_log=/var/log/xdebug.log

設定を有効にするために、php-fpmをリロードすることを忘れないでください。

2.2ホストでの設定phpstormの設定を入力します(Macのエントリはphpstorm-> Preferencesで、ウィンドウは設定と呼ばれているようです)。ポート9050を設定します。

idekeyをPHPSTORMに設定します

サーバーを追加します(ここでは、コードアクセスURLがwww.test.comであり、ポートがデフォルトの80であると想定しています)

デバッグ構成を構成する

2.3デバッグを開始します。ブラウザでhttp://www.test.com?XDEBUG_SESSION_START=PHPSTORMにアクセスした後、ヒットしたブレークポイントを入力できます。 

なしでアクセスした場合?XDEBUG_SESSION_START = PHPSTORMパラメーターはデバッグモードをトリガーしますか?このパラメーターを毎回持ってくるのが面倒だと思われる場合、Google Chromeは次のxdebugヘルパーに移動できます(その役割は実際には次の場合にCookieに配置することです)あなたはウェブサイトにアクセスしますそのパラメータの文字列)

 この時点で、喜んでxdebugを実行できます。

3.一般的な問題

 3.1時間が長すぎると、502エラーが発生しますか?

  502エラーはphpエラーです。通常、phpスクリプトの最大実行時間を超えています。php-fpm構成を設定し、request_terminate_timeoutフィールドをより長いポイントに設定できます。

 3.2 504エラーがありますか?

  まず、エラーがnginxによって報告されたエラーであることは明らかであるため、問題はnginxに表示されることです 
  。docker入力し、nginx構成ファイルのhttpブロックに以下追加します

#其中read_timeout是关键,send_timeout和connect_timeout不配置一般也是可以的
fastcgi_read_timeout 3600s; 
fastcgi_send_timeout 3600s; 
fastcgi_connect_timeout 3600s;

  nginxを再起動またはリロードすることを忘れないでください。そうしないと、有効になります。

   この場合、nginxはfastcgi_pass(fastcgi転送)であり、別の場合、nginxはproxy_passとして使用されます(この種の構成proxy_read_timeout 3600s。それ以外の場合はタイムアウトします)

   proxy_passとしてのnginxのように、例を挙げましょう。たとえば、Dockerのプロジェクトはnginx + php-fpmモードです。ポート85を監視できるため、Dockerにアクセスするたびにポート番号を取得したくありません。ホスト上のプロジェクトの場合、www.test85.comにアクセスしてdockerのプロジェクトにアクセスしたいので、この時点でホストにレイヤーnginxを追加してから、すべてのwww.test85.comリクエストをproxy_passからポートに構成する必要があります。 85.このため、この場合のxdebugデバッグでは、2つのnginxに504タイムアウトが発生する可能性があります。したがって、ホストProxy_read_timeout 3600sのnginxのhttpブロックを追加し、 dockerのnginxにfastcgi_read_timeout3600sを追加してタイムアウトを防ぐ必要があります。それぞれ。  私はあなたがより良い、この例では504エラータイムアウトのnginxを設定する方法を理解することができると思います。それはより明確になります。

おすすめ

転載: blog.csdn.net/weixin_37281289/article/details/106178718