phalcon3から5にバージョンアップした際のログイン、Securityの対応

phalcon3から5にバージョンアップした際にログイン回りで発生したエラー、Deprecated対応

Phalcon\Security not found

Class "Phalcon\Security" not found

https://docs.phalcon.io/5.0/ja-jp/upgrade#%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%83%A1%E3%83%A2

「Phalcon\Security」から「Phalcon\Encryption\Security」に変更になったので、use文を変更。

Deprecated: Phalcon\Encryption\Security::checkHash()

[08-Jun-2023 10:06:48 UTC] PHP Warning:  Attempt to read property "password" on null in /{pathto}/app/controllers/IndexController.php on line 83
[08-Jun-2023 10:06:48 UTC] PHP Deprecated:  Phalcon\Encryption\Security::checkHash(): Passing null to parameter #2 ($passwordHash) of type string is deprecated in /{pathto}/app/library/util/Hash.php on line 49

ユーザー情報を取得できなかった場合に、比較するパスワードがnullのためエラーになっています。
ユーザー情報を取得できなかった場合、checkHash()しないようにしていたが、チェックが走るようになってしまっているのが原因。

findFirst()でユーザー情報を取得していたのだが、データがなかった場合にfindFirst()はfalseではなくnullを返すように変更されていました。
なので「$userData !== false」で比較していたところを「$userData !== null」に変更。

undefined method Session\Manager::isStarted()

Call to undefined method Phalcon\Session\Manager::isStarted()

sessionが開始しているかはisStarted()ではなくexists()を使う
https://docs.phalcon.io/5.0/ja-jp/session#exists

The session save path [/var/lib/php/session] is not writable

The session save path [/var/lib/php/session] is not writable

Sessionの保存先に書き込み権限がないので、権限付与かディレクトリのユーザー変更

今回は、/etc/php-fpm.d/www.confでUserとGroupをnginxに設定しているので、User:root,Group:apacheをnginxに変更

$ chown nginx:nginx /var/lib/php/session

そのほかのアップグレードで発生したエラー対応