明けましておめでとうございます。今年もよろしくお願いいたします。
さて、新年早々、上記のエラーで環境構築できなくて、2時間ほどはまった(´;ω;`)
どっちかというと社内向けメモですがご容赦ください。
多分、こんなことではまる人も少ないとは思うんだけど、書いておきます。
環境は、WindowsにXAMPP for Windows 7.2.26 です。
PHPはPHP Version 7.2.26。
PHPのテンプレートエンジン、Smartyを呼び出すところは下記の通り。
<?php
/**
* Class Template
* テンプレートエンジン管理
* @since 2018/12/06
*/
class Template {
private static $smarty = null;
/**
* Smarty取得
* @param string $template_dir templateディレクトリ
* @param string $compile_dir compileディレクトリ
*
* @return object Smarty
*/
public static function getSmarty(
$template_dir = TEMPLATE_DIR,
$compile_dir = TEMPLATE_COMPILE
) {
if(self::$smarty !== null) {
return self::$smarty;
}
self::$smarty = new Smarty();
self::$smarty->template_dir = $template_dir;
self::$smarty->compile_dir = $compile_dir;
self::$smarty->register_function('autoversion', 'Template::autoVersion');
return self::$smarty;
}
/**
* ファイル名にバージョン管理用タイムスタンプ追加
* @param array $params
* $params['file'] アプリのルートディレクトリからのファイル相対パス
* @param object Smarty
*
* @return string クエリーストリングにタイムスタンプを追加したファイル名
*/
public static function autoVersion($params, &$smarty)
{
$file = $params['file'];
$path = SERVER_PATH . $file;
if(!file_exists($path)) {
return $file;
}
$mtime = filemtime($path);
return $file . '?' . $mtime;
}
}
Smartyを取得するところ。
$smarty = Template::getSmarty();
そしたら
Fatal error: Uncaught –> Smarty: undefined extension class ‘Smarty_Internal_Method_Register_Function’
で止まってしまうんですよねー。
ググっても、下記のページしか出てこず。
https://www.smarty.net/forums/viewtopic.php?p=94694&sid=369b32fbbe502599af4fa43ef106a2c2
Smartyは3.1.34(これを執筆当時の最新版)で最新版なのになー。
Smartyの設定が悪いのかな?
と思って試行錯誤すること数時間。
詰まって上記のSmarty呼び出し部分を書いた人に聞いたら、これ、Smarty2系でしか動作しない書き方らしい…。
なので、Smarty2.6.31をダウンロードし、インストールしたら動作するようになりました。
Smartyのダウンロードサイトはこちら。
https://www.smarty.net/download
人に聞くって大事だね(´ω`)