PhpStormを使う。POSTパラメータが取得できない。。

この記事は2016年6月30日に書かれたものです。内容が古い可能性がありますのでご注意ください。


PhpStormを使う。POSTパラメータが取得できない。。

はじめに

PhpStormに関して色々とまとめています。
PhpStormを使う。VirtualBoxのPHPでXdebug設定
PhpStormを使う。XAMPPのPHPでXdebug設定

上の2記事のようにデバッグもできるようになったので、意気揚々と開発を行っていました。
すると、POSTパラメータが取得できないという問題に直面しました。これは一体なぜなのでしょうか?

今回はその調査内容についてまとめます。短いです。
もし同じ問題で嵌まっている人がいたら参考にしてください。

調査

色々と調べているとどうやらbuilt-in serverを使っている場合に起こる問題だということが分かってきました。
built-in web serverというのはPhpStormに組込みのウェブサーバの事で、ApacheやNginxとは異なる、簡易webサーバです。

実は、VirtualBoxを立ち上げるのが面倒で、ローカルのPHPとビルトインwebサーバばかり使っていたのでした。
この事象は、日本語ではあまり話題に挙がっている記事がなかったのですが、
以下のように海外ではちらほら話題になっているようでした。

PhpStorm $_POST always empty
PHPStorm + Local PHP 5.6.16 = $_POST always empty.

中には

タグに「enctype」を指定すると直るという情報があったので試してみましたが、

<form method='post' action='test.php' enctype="multipart/form-data">
    <input type='text' name='name'>
    <input type='submit'>
</form>

変わらずでした。。

そして見つけたのが本家のサイトからの情報でした。
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206999125-PhPStorm-10-does-not-allow-POST-method?page=1#community_comment_207285849

これによるとどうやらPhpStormの新しいバージョンのバグとのことで、
想定通りbuilt-in web serverの場合に発生する問題とのことでした。
また、POST値だけでなく、GETやREQUESTでも同様なようです。

結論

対処方法としては、以下のようなものがあるようです。
・built-in web serverを使わないこと。
・PhpStormのバージョンを問題の発生していなかったバージョン(10.0.1)に戻す事。
・phpのCLIウェブサーバ(php -S localhost:8000)を使う。

私としてはおとなしくバグフィックス待ちつつ、
せっかく作ったVirtualBoxの仮想環境でリモートデバッグをしようと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP