ホームページ  >  記事  >  バックエンド開発  >  eaccelerator+PHP54 により、smarty 更新テンプレート 500 エラーが発生する

eaccelerator+PHP54 により、smarty 更新テンプレート 500 エラーが発生する

WBOY
WBOYオリジナル
2016-07-29 08:49:021392ブラウズ

問題の背景

game.37.comビジネスのsmartyテンプレートを更新した後、複数の500エラーレコードがサーバーに表示されました。 PHP エラー ログに報告されたエラーは次のとおりです:

[2016 年 5 月 16 日 15:46:01 Asia/Shanghai] PHP 致命的エラー: /*/template_c の未定義関数 content_57397470478e99_59376883() の呼び出し/6aede77242b 285842c628673e93d8bf1bd4bc6b0.file .server_list.htm.php on line 67

現象:テンプレート更新後、初回アクセス時に500エラーが報告されますが、再び通常のアクセスが発生します。

トラブルシューティング

smartyを通常に使用した経験によれば、テンプレートを更新した後、PHP500エラーを報告することはありません。そのため、サーバーの環境問題である可能性が推測され、トラブルシューティング用に特別な構成環境がリストされています。

プレリリース環境では、アクセラレータeAcceleratorを優先して確認してください。 eAcceleratorアクセラレータはPHPopcodeをキャッシュするため、この問題が発生する可能性があります。

テスト環境でテストする

デバッグページ: http://game.37.com/server_list_275.html
デバッグテンプレート: main.htm
生成されたsmartyコンパイルされたファイル: /*/template_c/6aede77242b285 842c628 673e93d8bf1bd4bc6b0.ファイル.server_list.htm.php

smartyのコンパイル済みファイル

を確認してください。更新されたsmartyテンプレート後に編集されたファイル2を比較し、PHPその理由は、エラーは、テンプレート内の古い関数を呼び出すことです。

PHP

例外エラーメッセージPHPの致命的なエラー: /*/template_c/6aede77242b285842c628673e93d8bf1bd4bc6b0.ht内の未定義関数content_573a944d7a2608_39051073()の呼び出し。 m.php 67 行目

smarty

動作原理図:

eaccelerator+PHP54 により、smarty 更新テンプレート 500 エラーが発生する
問題は、

smartyテンプレートの更新にあります。smartyは新しいコンパイル済みファイルを生成しますが、古いファイルの内容は依然としてアクセラレータによってキャッシュされており、これには、テンプレートファイル。アクセラレータのヒット ログを開くと、関連するレコードを表示できます:

eaccelerator+PHP54 により、smarty 更新テンプレート 500 エラーが発生する

解決策

1) アクセラレータを設定します

filterパラメータ、smartyのコンパイルされたファイルはキャッシュされませんeaccelerator.filter= "! /*/template_c/*.php"
ただし、パフォーマンスへの影響を評価する必要があります

2) アクセラレータに変更します

APC理由: 現在使用されている eaccelerator は
1.0-dev バージョンです。正式にリリースされたバージョンではありません。 APCは公式ソースからのものであり、安定版バージョンにダウンロードできます。


上記では、eaccelerator+PHP54 によって発生する Smarty 更新テンプレートによって報告される 500 エラーについて、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。