FC2ブログ


Eclipse-PHP環境でちょっとハマった

   プログラミング [2019/09/30]
「VS2017-はじめの・・・」で説明してきた、Winタブレット向けのアプリの相方(サーバ側)の試作をしていたときの話です。
もう、半年以上前の話なので、ほとんど細かいことは覚えてないのですが、当時のメモがあったので、それを元にハマったことを書きます。

Eclipse上でPHPのサーバスクリプトを作ってデバッグするときの注意点になるかと思います。

Eclipseのバージョンは、Oxygen.2 Release (4.7.2)

◆初めて使うときに躓かないために
とは言っても結局は、あまり考えないで進めて、ハマってからしか詳細を調べないのが普通ですよね。

さるの場合、最初のワークスペース指定から、何も考えずに適当にやったら、Eclipse起動時、あるいはPHP実行時に「Post startup...中に内部エラーが発生しました。」、「ローカルホストのPHPビルトイン・サーバーに公開中・・・」などのエラーが出るようになった。テストできない状態になった。

原因は、適当にやりすぎたから。
でも、それを解消してやり直しを掛けるのに結構手間取った。

まずは、やらかしたときの手順を追って行きます。
長いです。
※以降、絵が小さいときは、クリックすると読める程度の絵が出ると思います。


◆ワークスペースの指定
インストール後、Eclipseを起動すると、ワークスペース(ベースとなるディレクトリ)の設定ダイアログが表示されます。
20190930_php1.jpg
1)ここで、何も考えずに指定デレクトリを"..\xammp\htdocs"から"..\xammp\phptrans"変更しました。
2)「この選択をデフォルトとして・・・」をチェックしました。×
注)これらが後々話しをややこしくしたので、特にこだわりがないのであれば、ワークスペースは"..\xammp\htdocs\xxxx"とか、せめてそのままにしておきましょう。また、「この選択・・・」をチェックしちゃうと元に戻すメニューを探すのに苦労するので、環境が完成して安定するまでは、そのままにしましょう。

[起動]するとEclipseの無垢な画面が表示されます。
20190930_php2.jpg

◆PHPプロジェクトの作成
1)Eclipseのメニューから[ファイル]-[新規]-[プロジェクト]を選択します。
2)「新規プロジェクト」ダイアログから[PHP]>[PHPプロジェクト]を選択して[次へ]ボタンを押します。
20190930_php3.jpg

3)プロジェクト名を指定して[次へ]ボタンを押します。
20190930_php4.jpg

4)次のダイアログでは、特に指定するところもなさそうだったので、そのまま[完了]ボタンを押しました。

プロジェクトが作られました。
この時点で、ワークスペースのフォルダの下にプロジェクト名で指定した名前のフォルダが作成され、さらにその下になにやらフォルダとファイルが作成されています。

◆ソースファイルのセット
新規にコードを書く場合は、
1)Eclipseのメニューから[ファイル]-[新規]-[その他]を選択します。
2)「新規」ダイアログから[PHP]>[PHPファイル]を選択して[次へ]ボタンを押します。
3)ファイル名を指定するダイアログが表示されるので、名前を指定して[完了]ボタンを押します。

既にコーディングした.phpソースが存在する場合は、
1)前述のプロジェクトフォルダの下にそのソースをコピーします。
2)Eclipseのウィンドウにフォーカスして、[F5]キーを押します。
そうすると「パッケージ・エクスプローラ」の「PHPプロジェクト」の下にソースファイル名が現れます。
3)ソースファイルをダブルクリックすると、「アウトライン」タブとその右側にコードの内容が表示されます。
20190930_php5.jpg

◆PHPコードの実行
さあここからが問題の部分です。PHPコードを実行、あるいはデバッグしようとして、
1)「パッケージ・エクスプローラー」上のPHPソースファイル名を右クリックして、
20190930_php6.jpg

表示されるメニューから[実行]か[デバッグ]を選択すると以下の選択肢が表れます。
・1 サーバでxx
・2 PHP CLIアプリケーション
・3 PHP Webアプリケーション
・4 PHP Unitテスト
・xxの構成
さるは良く考えもせず「サーバxx」を選びました。
注)以前のバージョンのEclipseに慣れてて、実行確認する際には、ApacheをXammp-Controlツールを使って起動するもんだと思っている人は、「3 PHP Webアプリケーション」を選択しましょう。無難です。
さるは、CLI?、1と3は何が違うんだろとか思ってました。
改めて一生懸命ググった結果
 1.内部サーバで実行させる(Tomcatとかのことか?)
 2.コマンドラインで実行させる。Webサーバーが不要
 3.外部サーバ(Apache)で実行させる。Apacheの起動が必要
 4.詳細未調査
※Eclipseの場合、Apache環境も込みでインストールされているので、「外部サーバ」って言われてもなんか違和感ありますよね。


「1 サーバでxx」を選択すると、以下の画面が出ます。
20190930_php7.jpg

※最初の時だけこの画面が出る感じがしてます。後で、修正したくてもその設定画面がどこなのか、慌ててたせいもあって探せませんでした。

注)この画面での設定が問題です。サーバー名をデフォルトの「ローカル・ホストのPHPビルトイン・サーバー」のままにしてしまうと、エラーが出るようになります。しかも、簡単に治せませんでした。なので、半角英数字を使って、それらしい名前にしましょう。

ともかく、さるはデフォルトのままで進めてしまいました。

[次へ]ボタンで出る画面でも、「名前」という欄があって、最初は「PHP」と入っている。ここはそのままでもたぶん大丈夫。
20190930_php8.jpg
その下の「PHP実行可能ファイル」は空欄なので、その右側のボタンを押して、インストールされているPHPのバージョンを選択します。
20190930_php9.jpg
それで、[完了]ボタンを押しちゃうと・・・・

以下のダイアログが表示されて、ずーっと動きっぱなしのような状態になりました。
20190930_php10.jpg

さるは痺れを切らして[×]してしまいました。

そうすると、その後、以下のようなエラーが、ちょいちょい出るようになります。
20190930_php11.jpg

この状態のまま、[実行]しようとすると以下のような画面が表示されたような・・・
20190930_php12.jpg
気がします。

その後、どうなったか詳しいことは覚えてませんが、ともかくまともには動かなかったと記憶しています。

先のエラー頻発の根本的な問題を解消しないまま、デバッグ実行しようとして以下の引っ掛かりに次々と会います。
たぶん、上記の間違いとは関係ないので、この問題を再現させてしまった場合は、最後の「◆ワークスペースの削除(完全な削除)」をご参照ください。
早い話、最初からやり直せという手順です。

◆まともにデバッカが動作しない件
さるの場合、まずは、「PHP Webアプリケーション」として実行/デバッグしようとしてみました。
以下は、xampp\xampp-control.exeを実行してApacheを起動してからの操作です。

20190930_php13.jpg

「名前」、「ファイル」を指定して[実行]をクリック。
そしたら、「・・・デバッグ・モードで開始できませんでした。・・・デバッガーが指定されていません。」メッセージが表示された。
20190930_php14.jpg

「実行」-「デバッグの構成」メニューを選択し、ダイアログ上の「デバッグ」タブ選択後、[構成]ボタンをクリック
20190930_php15.jpg

「デバッガー」タブを選択して、「デバッガー」に「XDebug」を選択して、[完了]ボタンをクリックする。
20190930_php16.jpg

以下のダイアログで[デバッグ]、あるいは[閉じる]をしてから、アイコンバー上の虫アイコンをクリック。
20190930_php17.jpg

今度は、「Web起動はすでに実行中」メッセージが出た。
20190930_php18.jpg

???
1)実行/デバッグ構成で指定したURLが間違っていないか確認します。
2)Apacheサービスが開始済みかXampp-Controlで確認します。

さるの場合は、1)でした。

アイコンバー上に赤い■のアイコンが表示されている場合は、それをクリックして一旦停止して、再度虫アイコンをクリックしてみる。出てないときは、「ウィンドウ」-「ビューの表示」-「その他」メニューを選択し、ダイアログ上のツリービューから、「デバック」-「デバッグ」を選択して[開く]ボタンをクリックする。
20190930_php19.jpg
Eclipse画面のどっかに「デバッグ」タブが表示されて、現在の状態が表示されます。
項目を右クリックして、強制的に終了させたり、表示を消したりできます。

これで、デバック実行ができるようになったが・・・
今度は、ブレークポイントで停止しない状態になっていた。

◆デバッグをまともにするための各種操作
「実行」メニューをプルダウンさせると、「すべてのブレークポイントをスキップ」が指定されている状態になっていて、クリックしても状態は変わりません。
対処法として、
1)リフレッシュ
20190930_php20.jpg

プロジェクトエクスプローラーを表示(画面左側のノートとフォルダっぽいアイコンをクリック)して、対象のプロジェクト(上記の絵では、phptrans)を右クリックして表示されるプルダウンから、「リフレッシュ」を選択する。
2)クリーン
「プロジェクト」-「クリーン」メニューを実行。プロジェクトを選択して[クリーン]ボタンをクリック。
20190930_php21.jpg

参考にしたサイトでは「WTPもクリーンする」ように説明されいたが、何のことだかわからず。放置。

3)ブレークポイントの設定変更
Eclipseを再起動してみる。
Alt+Shift+Q & Bで「ブレークポイント」タブを表示する。
20190930_php22.jpg

タブ上に青●に斜線の入ったブレークポイントがあった場合は、そのブレークポイントを選択して、同タブ右上の●に斜線のアイコンをクリックして、ブレークポイントの青●を斜線なしにする。

でも、この時点でもダメでした。

4)php.iniの内容確認/修正
php.iniに[XDebug]セクションの追加。
ただし、ほとんどの参考サイトでは、XDebug自身をインストールするところからの説明だったが、まさかEclipseで追加インストールが必要とは思ってなくて、xampp\php\ext下にあったデフォルトのXDebugのdllを指定して試した。
php.ini
;//--------------------
[XDebug]
zend_extension=php_xdebug.dll
xdebug_remote_enable=1
xdebug_remote_connect_back=On
xdebug_remote_host="localhost"
xdebug_remote_port=9000
;//--------------------

でも、やっぱり効果なし。

その後、「xdebug_remote_connect_back」指定が1だとダメという記述を見つけて、コメントアウト(;xdebug_remote_connect_back=On)するもダメ。

5)XDebugをインストールするところからやり直し
ダウンロードサイトは、以下。
https://xdebug.org/download.php
PHPのバージョンと、32/64bitの区別はあるようなので、phpinfo()で表示された内容(Architecture:x86、Apache Version:Apache/2.4.29 (Win32) OpenSSL/1.0.2l PHP/5.6.32)から、「PHP 5.6 VC11 (32 bit) 」を選択し、\xampp\pnp\extに保存。
;//--------------------
[XDebug]
;zend_extension=php_xdebug.dll
zend_extension=php_xdebug-2.5.5-5.6-vc11-nts.dll
xdebug.remote_enable=1
;xdebug.remote_connect_back=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
;//--------------------

これでも、効果なし。

ただし、phpinfo()の内容にXDebugの設定に内容が表示されるようになった。
先の参考サイトのphp.iniの内容とphpinfo()の表示内容で異なる部分2行を追加。
xdebug.autostart=true
xdebug.idekey=XDEBUG_ECLIPSE



◆ワークスペースの削除(完全な削除)
「ウィンドウ」-「設定」メニューをクリックし、「開始およびシャットダウン」-「ワークスペース」を選択。(なぜこんなとこ?)
「最近使ったワークスペース」のリストから選択し、[除去]ボタンをクリック。
20190930_php23.jpg

※Eclipse起動時のワークスペース選択ダイアログ(「ワークスペース・ランチャー」と言うんだと。)を出さない設定にしてしまったと思った場合は、この設定画面の「開始時にワークスペースをプロンプト・・・」をチェックする。(ワークスペース選択ともランチャーとも言わないから非常に分かりにくい。)

[除去]を行っただけだと、同じ名前でワークスペース、プロジェクトを作成してもエラーが表示される現象は治らないみたいです。
ワークスペースフォルダに「.metadata」というフォルダがあり、その中の設定ファイルが残った状態だと、そのファイルの作り直しがされなくて、同じ状態に陥る場合があります。
なので念のため、ワークスペース・フォルダごとか、その下の不要な/身に覚えのないファイルは消してしまった方がよろしいかと思います。

さるの場合、作ったワークスペースを除去して、別名のワークスペースを作成して、「PHP Webアプリーケション」でデバッグするようにしたら、エラーは出なくなったし、デバッグも上手く動くようになりました。
でも、「デバッグ時に最初の行で停止しなかった件」と「ビルトインサーバ名不正でエラーの件」の因果関係は定かではありません。

ごちゃごちゃ長々と書きましたが、結局
・ビルトインサーバを使用してテスト/デバッグを行う場合、
 サーバ名をデフォルト(日本語)のままにするとエラーが発生する。
・その場合、デバッグがまともに行えない。
・その状態は、ワークスペースを[除去]して、
 さらに.metadataフォルダを削除しないと残ってしまう。
・Xdebugはインストールし直しが必要そう。


以上です。


では、この件はこの辺で。
m(__)m
スポンサーサイト





コメントの投稿

非公開コメント

カレンダー
10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-








本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



ブログランキング・にほんブログ村へ にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR