2019/07/13(Sat)Cygwin php + PhpStorm Xdebug で、PHPなWebアプリをブレークポイント仕掛けてデバッグする

はてブ数 2019/07/13 8:21 つーさ

忘れる前にメモ。

まだcygwinなんか使ってるの? WSLにしたら? という心の声も聞こえるが、 postgresもphpも入れるだけで動くし慣れ親しんでいるのもあって、開発環境としては手軽なので。でも、vagrantやdockerが手軽に使えるようになってきて、世の中の人からみたらきっと少数派になりつつあるのだろう。

Cygwin に postgres 入れて、 php アプリの開発環境にしている。

$ php -S localhost:8000

で動く built-in server で、xdebug で PhpStorm から ブレークポイントしたい話。

XdebugのPre-built なバイナリは、PHP公式ビルド向けしかない。

急がば回れ。 PHP公式ビルド入れるかで入れた。ら、pdo_pgsql を有効にするとセグる。うーん、よくわかんない。

急がば回れ。その2。Xdebugソースからcygwin用にソースからビルドすればいいんじゃね?

https://github.com/xdebug/xdebug から、clone して、readmeのとおりに rebuild.sh すると、コンパイルエラーで止まる。ググると、 https://stackoverflow.com/questions/29752441/mac-xdebug-make-warning-incompatible-pointer-types-initializing-jmp-buf-ak が引っかかったので、

#ifdef HAVE_SIGSETJMP
#       define SETJMP(a) sigsetjmp(a, 0)
#       define LONGJMP(a,b) siglongjmp(a, b)
#       define JMP_BUF sigjmp_buf
#else
#       define SETJMP(a) setjmp(a)
#       define LONGJMP(a,b) longjmp(a, b)
#       define JMP_BUF jmp_buf
#endif

を、 xdebug_handler_dbgp.c の上の方に書いて、1032行目を

JMP_BUF          *original_bailout = EG(bailout);

にしたら、makeできた。make installした。

cygwin の php は、 /etc/php.d/ の下にある ini を読んでくれるので、

/etc/php.d/xdebug.iniを作って、

[Xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"

と書いたら、phpinfo に xdebug 出てきた。

後は、PhpStorm のマニュアル https://pleiades.io/help/phpstorm/creating-php-web-application-debug-configuration.html に書いてあるとおりに進めたら、なんかデバッグブレークできた。

めでたしめでたし。

2019/03/28(Thr)Docker on Ubuntu on Windows Subsystem for Linux で php:apache をなんとか動かすまで

はてブ数 2019/03/28 6:00 つーさ

結論から言うと、
hello-world は docker バージョンを 17.12.1 に下げることで動いたんだけど、

php:apache はちょっと変なことをしないと動かなかった。
どうも docker コンテナ内のfsでsymlinkを追跡できなかったり、
ファイルやディレクトリを消してもゴミが残ってファイルが消えなかったり、
なんか、謎の挙動をする。

# Dockerfile
FROM php:apache
RUN rm /var/lock && mkdir /var/lock  && chmod 1777 /var/lock
RUN rm /var/run  && cp -rp /run /var/run
RUN mkdir /etc/apache2/mods-enabled/mpm_event.conf /etc/apache2/mods-enabled/mpm_event.load

一応、phpinfo を拝むことはできた。

WSLでDockerを開発環境にするのは、まだしんどそう。

dockerに触ったことがなくて、ちょっと勉強しようと思って、環境の作り方を調べていた。

最近、WSLでdockerが動くらしいという。
普通はDocker for Windowsらしいのだけど、マシンが非力なので、Hyper-Vじゃない環境で動かせるならその方がいい。
というか、Hyper-V有効にしたらvagrant動かなくなってしまう。ちょっと困る。

WSLのインストールからUbuntuをWindows上で動かして、その上にdockerを入れてみようと思った。

が、すんなりとは行かなかったので、正しい挙動(?)を見るために、結局途中でDocker for Windowsも入れた。
((ただ、すでにvagrantが入ってる環境なので、Docker for Windows じゃなくて、vagrantにdocker用のディストリ入れる方がよかったね))

続きを読む

2019/03/22(Fri)screen から tmux に乗り換えた

はてブ数 2019/03/22 3:04 つーさ
psql内でCtrl+Rして、長い文が履歴に引っかかったときに、カーソル位置とかなんかおかしくなる。
TERMを正しくすればいい気がするけど、よくわからん*1

tmux試してみようかな、で1週間くらい前からお試し中。

ただ、端末は、指先のように使いたいのであって、
新しいキーバインドに慣れたいというモチベーションはもはやない。

なので、主に、screen で自分が使っているキーバインドに近くなるように、
ググっていろんなところから mixture した自分用 .tmux.conf を↓に

続きを読む

2018/02/13(Tue)ゼロから始めるPHP…… (その2) PostgreSQL 入れる。

2017/08/23(Wed)ヒューマンリソースマシーン 素因数に分解せよ 70STEP解法

はてブ数 2017/08/23 23:41 つーさ
プログラマだしアセンブラもかじってるし楽勝すぎるかな と思って見合わせてたのだけど、
まぁ、面白そうだし、と思って買ってプレーしてクリアしてみた。

終盤はそれなりに手応えがあって楽しめた。

貧弱な命令セットかつスタックもないのに、
ソートを実装しろと言われた日にゃ……
どのアルゴリズムを採用すべきかから迷いましたが、ええ。
(バブルソートではスピード目標を満たせなかった……

今日は YEAR 40 素因数分解せよ の回答が、よくできた気がするので、記事にしておこうと思う。

元々は、スピード目標の想定解法がわからなかったのが理由だけど、
25セル使えるし、テーブル作れば速いんじゃね、と思ってやり始めたのだけど。
以下、ネタバレ含む。

続きを読む

2017/08/18(Fri)コミケ行ってきた。1日目だけ。

はてブ数 2017/08/18 14:20 つーさ
1週間弱経ってますが。
というわけで、ブログが黒くなりました。

1日目は東7の同人ゲー・技術書界隈しかうろうろしてませんでしたが、
ほんとに、円盤じゃなくてダウンロードカードの配布が増えたなあという印象。
久しぶりになんか作りたくなる刺激を受けられる空間。

今から買ってきたゲームで遊ぶ。

2017/06/26(Mon)メインPCのRAID0化

はてブ数 2017/06/26 6:31 つーさ
NASのディスクを4TBx2に入れ替えた。ので、それまでNASで使ってた 2TB が2つ余った。

デスクトップに組み込んで、もともと使ってた2TBと合わせて、Windowsのストライプボリュームにしてみた。
20170626_042434.png
20170626_050438.png

続きを読む

*1 : BSOD無限ループになったが、1回セーフモードで起動したら直った

OK キャンセル 確認 その他