PHP:PHP8.1環境でのSmartyエラー

Dockerで作成したPHP環境(PHP8.1環境)にてSmartyの警告が発生した


環境

PHP 8.1.0
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

今度は違うエラーが発生
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 件のコメント:

その他の記事