PHPを5系から7系へアップデートしました。
以下の構文エラーが出ております。
Parse error: syntax error, unexpected ''' (T_CONSTANT_ENCAPSED_STRING) in /var/www/library/Smarty/Smarty_Compiler.class.php on line 283
// エラー発生箇所 283 if (preg_match_all('~(<?(?:\w+|=)?|?>|language\s*=\s*[\"\']?\s*php\s*[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) {
【質問】
'''が構文エラーの原因だと思いますが、どのように修正するのが適切か判断が出来ません。
恐れ入りますが、ご教授いただけますでしょうか?
よろしくお願いいたします。
【追記】
ご回答いただき、提示範囲に問題はないとの事なので、本エラー以前に修正した箇所で問題が発生したと思います。
Warning: preg_replace_callback(): Requires argument 2, ''{php' . str_repeat(" ", substr_count('\0', " ")) .'}'', to be a valid callback in /var/www/library/Smarty/Smarty_Compiler.class.php on line 272 // エラー発生箇所 265 /* replace special blocks by "{php}" */ 266 //$source_content = preg_replace($search.'e', "'" 267 $source_content = preg_replace_callback($search.'e', "'" 268 . $this->_quote_replace($this->left_delimiter) . 'php' 269 . "' . str_repeat(\"\n\", substr_count('\0', \"\n\")) .'" 270 . $this->_quote_replace($this->right_delimiter) 271 . "'" 272 , $source_content);
preg_replaceをpreg_replace_callbackに変更し、269行目の構文を色々修正しているのですが、おそらく上手くいっていないです。
恐れ入りますが、こちらに関しても何かご教授いただけますでしょうか。
よろしくお願いいたします。
【追記2】
smartyとPHPのバージョン互換のご指摘をいただいたので、追記いたします。
PHP7.3.22
smarty2.6.27
こちらのサイトを確認する限り、バージョンは上げた方が良さそうなので試してみます。
【追記3】
smarty2.6.27から3.1.34にアップデートしました。
Fatal error: Uncaught Error: Class 'Smarty_Internal_Undefined' not found in /var/www/axia/library/Smarty/sysplugins/smarty_internal_extension_handler.php:168 Stack trace: #0 /var/www/axia/library/Smarty/sysplugins/smarty_internal_extension_handler.php(130): Smarty_Internal_Extension_Handler->__get('get_template_va...') #1 /var/www/axia/library/Smarty/sysplugins/smarty_internal_data.php(290): Smarty_Internal_Extension_Handler->_callExternalMethod(Object(Smarty), 'get_template_va...', Array) #2 /var/www/axia/application/library/Zend_View_Smarty.php(341): Smarty_Internal_Data->__call('get_template_va...', Array) #3 /var/www/axia/application/modules/default/controllers/IndexController.php(30): Zend_View_Smarty->getVar('pageInfo') #4 /var/www/axia/library/Zend/Controller/Action.php(516): IndexController->indexAction() #5 /var/www/axia/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('indexAction') #6 /var/www/axia/library/Zend/Controller/Front.php(955): Zend_Controller_Dispatcher_Standard- in /var/www/axia/library/Smarty/sysplugins/smarty_internal_extension_handler.php on line 168 // エラー箇所 168 return $this->$property_name = new Smarty_Internal_Undefined($class);
Smarty_Internal_Undefinedが無いと言われているようですが、アップデート時にクラスファイルは用意されている為、なぜこのエラーが出ているのかが分かっていません。
経路を見る限りZend Frameworkも触っているので、Zend Frameworkのバージョンが古い可能性を疑っています。
何かお分かりの方、教えていただけますでしょうか。
Zend Frameworkのバージョンは1.12.0なので、これがPHP7とsmarty3に互換が無いと考えるべきでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 05:35