質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

4回答

2218閲覧

PHPバージョンアップ後の構文エラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2020/09/24 02:49

編集2020/09/25 04:34

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に互換が無いと考えるべきでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

Thank you for this information. Do you think the same fix can be used on future updates of PHP?

投稿2020/09/25 05:34

EmmaBabe

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/25 05:35

これは何のアドバイスでしょうか。
guest

0

いれてるSmarty本体がPHP7系に対応してないとかありませんか?
環境要件確認してみてください。

投稿2020/09/24 03:31

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/24 07:09

ご回答いただきありがとうございます。 こちらPHPのバージョンは7.3.22、 使用しているsmartyのバージョンは2.6.27になります。 smartyのバージョン2.6.27がPHP7.3系と互換性があるかを調査中です。
m.ts10806

2020/09/24 07:26

その旨、質問本文にも追記願います
m.ts10806

2020/09/24 07:27

いずれにしてもプラグインやライブラリ、フレームワークのコアソースに関わるところを直に修正するのはあまりよろしくないとは思います。 バージョンアップで検証するのが基本です。
退会済みユーザー

退会済みユーザー

2020/09/24 07:47

お返事ありがとうございます。 質問に追記いたしました。 ご指摘通り、smartyのバージョンアップを試してみたいと思います。
guest

0

なんとも言えませんがあるあるとしては
283を含むその前後の行に全角スペースが間違って
入っていたりしませんか?

投稿2020/09/24 03:07

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/24 07:06

ご回答いただきありがとうございます。 こちら確認いたしましたが、スペースに関しては問題ありませんでした。
guest

0

提示範囲に問題はないように見えます。
前後を確認してください。

投稿2020/09/24 02:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/24 07:06

ご回答いただきありがとうございます。 質問内容を追記いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問