Dockerで作成したPHP環境(PHP8.1環境)にてSmartyの警告が発生した
環境
PHP 8.1.0
Smarty 3.1.36
Smarty 3.1.36
現象
Dockerで作成したPHP環境(PHP8.1環境)にて、既存のPHPで作成してあるプログラムを実行させたら警告が発生した。
Deprecated: Function strftime() is deprecated in /var/www/html/xxx/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php on line 48
原因
strftime関数はプラットフォームに依存する問題があるためPHP8.1.0で非推薦となった模様。
対応
とりあえずSmartyをアップデート(composer update smarty/smarty)してみる。
3.1.36 → 3.1.40
今度は違うエラーが発生
vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php の23行目
strftimeの警告は、smartyバージョンアップにより解消されたと思ったが解消されていなかった。
vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php 48行目の "strftime" を "date" へ変更することで対処した。
不要のようなので上記行を削除した。
3.1.36 → 3.1.40
今度は違うエラーが発生
Fatal error: Type of SmartyCompilerException::$line must be int (as in class Exception) in /var/www/html/xxx/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php on line 8
vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php の23行目
"public $line = null"
を"public int $line = 0;"
へ変更することで対処した。strftimeの警告は、smartyバージョンアップにより解消されたと思ったが解消されていなかった。
vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php 48行目の "strftime" を "date" へ変更することで対処した。
require_once("smartybc.class.php");
のところで "Failed to open stream" のエラーとなった。不要のようなので上記行を削除した。
PHP, Smarty
0 件のコメント:
コメントを投稿