kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

cakephp1.2 -> cakephp2.10 に変更をした時の失敗

cakephpのアップデートを無事?に終わったと思います。

kazu22002.hatenablog.com

ただ失敗に失敗を重ねてしまったので、反省としてこんなケースもあるのかと次回に活かせるよう書きたいと思います。

session

cakephp1からcakephp2への違いでセッションのパス設定が変わっています。

2.0 において、セッションクッキーパスのデフォルトは / です。これを変更する場合は session.cookie_path ini フラグにアプリケーションのディレクトリパス を指定することが出来ます:

セッション - 2.x

開発中に1.2から2系に上げたときにログインできなくなった人も確かにいましたが、Cookieを削除したらいけたから偶然だろうとおもっていましたが、日常に使っている人たちはほぼ残っていましたね。

運用に即してちゃんとテストを実施してみると、ログインが毎回できなくなり確かに致命的なエラーになっていました。

ただ反省です。

cookieの暗号化

cakephpcookieの情報を暗号化して、使用するときに復号化しています。

暗号化に任意のsaltを使用しているため、この設定が共通ではなかったため、リリースしたときに復号化できていないエラーが多数発生しました。

sessionにも書きましたが、ログインができなかったため、cookieをすべて消していたため、きれいさっぱりない状態で開発をしていました。

そう、1.2の時のcookieを残さずに、2系にアップしたためエラーを見つけることができなかった形になります。

自分の考えが、甘かったです。

ショートカット

みなさん、デスクトップにWEBのショートカットが置いてあります。

ショートカットから起動することでログイン画面を通さずに、規定の画面に飛びます。ログイン状態のまま終了し、タイムアウトしていなければログインもできるため常にログイン画面からのテストばかりしていたことが意味がない状態になりました。

これは予想外だったが、いままで動作していたため問題ないと思い込んでいました。

難しいです。

PHP7への移行

cookieの暗号化の件も関連し、PHP7.2で標準からなくなっているモジュールがあったりしました。

mcrypt使ってるんですね。。。

PHP7へ移行することは簡単だと思っていましたが、こういうケースは予想していませんでした。

たぶんPHP7へ移行するためには、暗号化をしている部分を影響がないようにアップデートしてからアップデートが必要になってきそうです。

暗号のアップデートを実施する期間が終わってからでないと、移行できなそうです。

あとはsrandのバグ??ですね。

sucrose.hatenablog.com

これ、本当に意味がわからなかったけど、出会ってしまった感じです。暗号化変更が必須じゃん。

甘ちゃんすぎました。。。

でも、やりきった

ミッション完遂は完遂したと思っています。

移行時にgitが本当に役に立ちました。

タグづけして、cakephp1の状態を保存しておいてくれたことに感謝です。

gitのブランチを変更するだけで、1.2 -> 2.10 の移行テストが簡単にできちゃうんですね。

これがなければ、もっと時間がかかっていたし、心が折れていたと思います。

いろいろなツールやできることを知っていることで、チャレンジしやすくなると実感した出来事でした。

さすがに疲れたわぁ。