php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

CakePHP3でHTTPSにする

CakePHP3でHTTPSにする

表題の件ですが、以前も同じような記事を書いています。


しかし、基本的にHTTPアクセスしていたものをHTTPSでリダイレクトさせているだけです。
以前対応した時は、AWSのELB(Elastic Load Balancing)で80番ポートも443番ポートも解放していたので、80番でアクセスしてきたものを443番でリダイレクトして解決させたのです。

がしかし、今回この構成をベースに新たなサービスの開発をする際にハマりました。。

環境自体は私が構築しないので、サーバー管理に依頼して出来上がってきた時に一言添えられていました。

【HTTPアクセスは推奨しないのでHTTPSしか許可していない構成です】

まあ、HTTPSなんて当たり前だから気にもせずコードをGITからcloneして配置

アクセスしてみると、以前と同じようにHTTPSからHTTPに切り替わる

と言うことでhttpd.conf(正確にはvirtualhost.confですが)に以前やった対応を記載してgracefulをしてみると、ログインフォームからログイン時にログイン成功しているけれどもTOPページが表示されず、、、

どうやらリダイレクトしているっぽい、、、

TOPページのURLを直打ちすればログインしている状態で表示されます。

その状態で、ログアウトするとまたログインページが表示されずにグルグルとアクセスしようとしている感じがありますがページは表示されません。

少し調べると、なんとなくわかりました。

発生している場所は、CakePHPでリダイレクトしている箇所です。

その時点で気付きました。。

今回はELBは443ポートしか解放されていません。
リンクやFORMは相対パスなので現在アクセスされているプロトコルで遷移していきます。つまりはTOPから設定メニューのリンクはHTTPSでアクセスしていればHTTPSで遷移していきます。
しかしリダイレクトはリダイレクトURLを生成して転送をかけるので、ここでどうやらHTTPでURLを生成してリダイレクトしていました。

HTTPでリダイレクトする⇨ELBは443番しか受け付けない

結果アクセスできない状態だと言うことに気付きました。

ここでちょっと急ぎの対応でしたのでとりあえずサーバー管理にELBの80番も開けてよと依頼。

できたよー と連絡もらったのでアクセスしてみると

できないし。。。

サーバー管理に確認に行くと

もうおらんがな!

仕方がないのでCakePHP3でリダイレクトURLをHTTPSにする方法を調べるか、どうせそっちの方が正しい対応だしと思い取り掛かりました。

リダイレクトの部分を見ていくと

env(HTTPS)

これで有効だったら【s】つけるってなってたから環境変数設定すればいいのかと思いました。
でも環境変数ってサーバーの?どこの?ってなって調べるとヒットしたのが
dotenvを使って環境変数みたいな記事

んーー

インストールとかは無理だからなー

次にヒットしたのがベースのURLを記載すると言うもの


こちらの
アプリケーションのルートまでの (プロトコルを含む) 完全修飾ドメイン名
App.fullBaseUrl

こちらにアプリケションのドメインをHTTPSで記載して対応しました。

app.phpのAPPのセクションで以下のように変更
//'fullBaseUrl' => false,
'fullBaseUrl' => env('PROTOCOL', 'https') . '://' . env('DOMAIN', 'アプリケーションのドメイン'),

この記事を記載している時におそらくこれが一番スマートなんじゃないかと思う記事を見つけました。

CakePHP3で.envファイルを有効化する

私の担当プロジェクトではcakePHP3.5ではないかもしれませんが、もしそうであればこちらでHTTPSを有効にして完了かと思います。

なんかcakePHP2の頃はsecureみたいなのでapp.phpで設定した気がするんだけど気のせいか。。

しかし久々にPHPにさわった…

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件