回答編集履歴

1 追記

hiim

hiim score 1661

2016/11/01 18:28  投稿

ポートを確認との事ですが、まず
`bin/cake server -H 0.0.0.0 -p 8000 2> serverLog &`
で立ち上げているので8000ポートを使用しているというのはわかっているはずですが、なぜポートを取得するのでしょうか?
また
`echo $_SERVER['SERVER_PORT'];`
はブラウザでアクセスしてきた際、`$_SERVER`というスーパーグローバルにサーバー情報としてポートも入っていると
思いますのでこれはおそらく8000を出力するとおもいます。
最後の
> こちらを shell コマンド確認できるように
というのが意味がわからなかったんですが、これはサーバーのコンソールから
```
$a = $_SERVER['SERVER_PORT'];
$this->out($a);
```
という内容を保存したファイルを実行するという事ですか??
cake自体をあまり使った事がないのでcakeに特化した何か使い方があるなら検討違いな答えになるかもしれませんが、
あくまでスーパーグローバルはブラウザ等でアクセスしてきた時に有効な変数でshell等では使えないと思います。
もしサーバーのコンソールにログインしてlistenポートを確認したければ
`net stat -ano`
などでtcpのlisten状態のポートを確認されたら良いと思います
などでtcpのlisten状態のポートを確認されたら良いと思います
###追記
cakePHPに関してあまり知識がなかったため、先ほどもう一度調べましたが、shell コマンド確認とはAppShellクラスを継承したクラスを作って実行という事でしょうか?
それであればcakephpに特化した機能ですが、サーバーコンソールから同様の内容を実行できるようですね。
$_SERVER['SERVER_PORT']がないというエラーですが、一度$_SERVER自体をdumpして何がセットされているか確認してみてください。[ここ](http://php.net/manual/ja/reserved.variables.server.php)にあるようにスーパーグローバル変数にはすべてがセットされる訳ではありませんので

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る