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