お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。

フルスクラッチで組むやつ

確認環境

Env Ver
Ubuntu 20.04.4 LTS
nginx 1.18.0 (Ubuntu)
MariaDB 15.1 Distrib 10.3.34-MariaDB
grafana-server Version 9.2.5 (commit: 042e4d216b, branch: HEAD)

前提

  • Windows側からhttp://grafana.test/としてアクセスする
  • DBにはMariaDBを使用

hostsの編集

Windows側のhostsに以下を追記

127.0.0.1 grafana.test

各種環境のインストール

sudo apt update
sudo apt install -y nginx mariadb-server

sudo apt-get install -y apt-transport-https software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

nginxの設定

cat <<'EOF' | sudo tee /etc/nginx/conf.d/granafa.conf
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

upstream grafana {
  server localhost:4000;
}

server {
  listen       80;
  server_name  grafana.test;
  access_log   /var/log/nginx/grafana.access.log;
  error_log    /var/log/nginx/grafana.error.log;


  location / {
    proxy_set_header Host $http_host;
    proxy_pass  http://grafana;
  }

  location /api/live/ {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $http_host;
    proxy_pass http://grafana;
  }
}
EOF

sudo service nginx start

MariaDBの設定

ユーザー作成

idpwの部分は適当に変える

sudo service mysql start
sudo mysql
CREATE USER 'id'@'%' IDENTIFIED BY 'pw';
GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;
quit

外部接続テスト

適当なRDBクライアントから繋げればOK

grafanaの設定

  1. sudo nano /etc/grafana/grafana.iniで適当にいじる
# The http port  to use
http_port = 4000

# The public facing domain name used to access grafana from a browser
domain = grafana.test
  1. sudo service grafana-server start
  2. http://grafana.test/ へアクセス
    1. IDPW共にadminが初期

DBの読み込み

  1. MariaDBに適当なDBとテーブルを作る
  2. Grafanaにログインする
  3. サイドバーからConfiguration -> Data sources
  4. DBの情報を入れて接続
  5. 後はよしなにやる

VSCodeでは出来たことがPhpStormだと上手く出来なかったので、その解消法です
Remote Developmentに慣れてるとハマりやすいと思います
PhpStormに類似の機能は多分ないです

PhpStorm編

確認環境

一応Apacheの上に乗っかったLaravelで確認してますがそこらへんの環境情報は端折ってます

Env Ver
Windows 11 Pro
PhpStorm 2021.3.2
Docker 20.10.11
docker-compose 1.29.2
PHP 8.1.1
Xdebug 3.1.3

Dockerfile

PHPが入ってるDockerfileに以下を追記
出来ることならヒアドキュメントで書きたい

RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN echo "zend_extension=xdebug" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.mode=develop,coverage,debug,trace" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.start_with_request=trigger" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.trigger_value=StartProfileForMe" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

Dockerの設定

適当にDockerを追加してコンテナとローカルのパスをマッピング

20220412031939.png

PHPインタプリタの設定

CLIインタプリタをDockerに向けて設定します
パスマッピングは勝手にやってくれた気がする

20220412031948.png

デバッグ

HTTPリクエスト

受話器みたいなところを押してcurlなりPOSTMANなりブラウザなりにXDEBUG_TRIGGER=StartProfileForMeというCookieを刺してリクエストするとブレークにかかります
初回だけパスマッピングを構成するダイアログが出てくるのでよしなに処理します

20220412031956.png

PHPUnit

デバッグ構成を作ってデバッグするだけ

20220412032006.png

おまけのVSCode編

VSCodeだとネイティブに動くのでDockerの存在を考えなくて済むのは楽ですが、IDEとしての性能はPHP Intelephenseに課金してもPhpStormには劣るので微妙なところ(静的解析に問題がある

確認環境

PhpStormと被る部分は端折ってます

Env Ver
VSCode 1.64.2
ms-vscode-remote.remote-containers 0.217.4
robberphex.php-debug 1.14.0

Dockerfile

PHPが入ってるDockerfileに以下を追記
PhpStormとの違いはxdebug.client_hostが不要なところです
(PhpStormでもCLI Debugだとなくていけるっぽいのでややこしい)

RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN echo "zend_extension=xdebug" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.mode=develop,coverage,debug,trace" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.start_with_request=trigger" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.trigger_value=StartProfileForMe" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

launch.json

  • Listen for Xdebug
    • HTTPリクエスト用
  • PHPUnit
    • PHPUnit用
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
        {
            "name": "PHPUnit",
            "type": "php",
            "request": "launch",
            "program": "${workspaceFolder}/vendor/phpunit/phpunit/phpunit",
            "args": ["${file}"],
            "env": {
                "XDEBUG_TRIGGER": "StartProfileForMe"
            },
            "port": 9003
        }
    ]
}

デバッグ

PHPのいるコンテナにAttach Visual Studio CodeしてF5押せばデバッグできます

あとがき

個人的に操作感はVSCodeの方が好みなので使えるならVSCodeでいきたいのですが、今の所PhpStormには敵わないという感じなのが悲しい
まぁJS/TS用のエディタみたいなもんだし仕方がないですね…
ただGitのGUI周りはVSCodeが圧倒的に好みなので、Git操作するときだけVSCode使ってたりはします
しかしPhpStormとVSCodeを共存させるのはxdebug.client_hostの向きの関係で微妙な感じですね…

ローカル環境用の開発ドメインをhttps化する時に使えるやつ
例えばローカル環境に複数のサービスがいて、それぞれをhttps://*.example.com/のようなドメインで管理したい時に使える

確認環境

同じことをすればLinuxとかでも応用できると思う

Env Ver
nginx 1.19.8
mkcert 1.4.3
Windows 10 Pro 19043.1415

手順

  1. mkcert の導入とワイルドカード証明書の作成
    choco install mkcert
    # mkcertを認証局として登録
    mkcert -install
    # 証明書を作成するドメインを列挙
    mkcert example.test *.example.test
    mv _wildcard.example.com+1.* C:/nginx/conf/.ssl/
    
  2. nginxの設定に証明書を記載

    server {
        server_name  dev.example.com;
        listen 443 ssl;
    
        ssl_certificate     ssl/_wildcard.example.com+1.pem;
        ssl_certificate_key ssl/_wildcard.example.com+1-key.pem;
        ...
    }
    

突如としてPhpStormがクラッシュし、文字入力がまともにできなくなり、多くのアプリが起動不能に陥ったのでその対処法のメモです

環境

環境 内容
OS Windows 11 Pro Build 22000.469
M/B ASUS ROG STRIX Z390-F GAMING
VGA ROG-STRIX-RTX2060-O6G-GAMING

確認した事象

確認時刻:2022-01-28T22:38:00+09:00

  • Ctrl + Alt + Fを押したらPhpStormが落ちる
    • これがすべての始まり
  • PhpStormを再起動するとスプラッシュスクリーンが表示されたあと特に何も起きない
    • タスクマネージャーから見るとゾンビプロセスになってる
      • [f:id:lycolia:20220406231148p:plain]
  • 文字入力がまともにできない
    • 2秒おきくらいの感覚でフォーカスが飛ぶ
  • Thunderbirdがクラッシュし、再起動でゾンビプロセスになる
  • Docker Desktopがクラッシュする
  • ASUS GPU TweakIIがクラッシュする
  • イベントビューワがクラッシュする
  • Chromeはクラッシュしない
  • Explorerはクラッシュしない
  • OS再起動でも変わらず
  • セーフモードでは起きない
  • 次のコマンドで改善しない
    • sfc /scannow
    • Dism /Online /Cleanup-Image /CheckHealth
    • Dism /Online /Cleanup-Image /ScanHealth

TextInputHost.exeが無限増殖している様子

減ったり増えたりを繰り返すのですが、明らかに様子がおかしいです

TextInputHost.exeが無限増殖している様子

イベントビューワの様子

すべての始まりのトリガーらしきもの

増殖のトリガーらしきイベント

大量の警告KSR データを読み取ることができませんでした

大量の警告 KSR データを読み取ることができませんでした

大量のDCOM 1084エラー

大量のDCOM 1084エラー

改善した方法

  • ASUS GPU TweakIIのアンインストール
  • このアプリのexeファイルをリネームするだけでも改善します

後書き

  • ASUS GPU TweakII自体は2年以上前にインストールしていたので、なぜ突如こんな事になったのかはよくわかっていません
  • 取り敢えずPhpStormもThunderbirdも正常動作してますし、文字入力にも支障がなくなったので良かったです

参考にした記事

投稿日:
言語::PHP::XdebugOS::Windowsソフトウェア::VSCode

環境

Windows 10

Env Ver
PHP 8.0.2
Xdebug 3.0.2

php.ini

zend_extension="xdebug-3.0.2-8.0-vs16-nts-x86_64"
xdebug.start_with_request=yes
xdebug.mode=debug

settings.json

別になくてもデバッグは出来る

"php.validate.executablePath": "C:/path/to/php.exe",

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        }
    ]
}