apc.include_once_override=1にするとEC-CUBEやWordPressは動かなくなる

プログラミング

EC-CUBE2.12系からapcがONでも動くようにようやくなりましたが動かないパターンがまだあるようです
といってもアプリの問題というよりかはPHPとapcの問題な気がしますが

PHPのエラーログはこんな感じになります

~~~
[14-Apr-2013 23:19:47] PHP Notice: Use of undefined constant HTML2DATA_DIR – assumed ‘HTML2DATA_DIR’ in /Users/homuhomu/www/eccube/html/admin/require.php on line 32
[14-Apr-2013 23:19:47] PHP Notice: Use of undefined constant CLASS_EX_REALDIR – assumed ‘CLASS_EX_REALDIR’ in /Users/homuhomu/www/eccube/html/admin/index.php on line 25
[14-Apr-2013 23:19:47] PHP Warning: require_once(CLASS_EX_REALDIRpage_extends/admin/LC_Page_Admin_Index_Ex.php) [function.require-once]: failed to open stream: No such file or directory in /Users/homuhomu/www/eccube/html/admin/index.php on line 25
[14-Apr-2013 23:19:47] PHP Fatal error: require_once() [function.require]: Failed opening required ‘CLASS_EX_REALDIRpage_extends/admin/LC_Page_Admin_Index_Ex.php’ (include_path=’.:/Applications/MAMP/bin/php/php5.3.6/lib/php’) in /Users/homuhomu/www/eccube/html/admin/index.php on line 25
~~~

HTML2DATA_DIRとCLASS_EX_REALDIRがUse of undefined constantといわれ、展開できずにrequire_onceで落ちるようです
なんとなくapcのバグっぽいなーと調べてたらそれっぽいものを見つけました

PHP: 実行時設定 – Manual

apc.include_once_override=1 can cause more problems than it solves. If you’re running into weird errors regarding relative paths, make sure this setting is off. PHP 5.3 already implements most of the speed ups in these calls anyway.

apc.include_once_override= 1は、それが解決するよりも多くの問題を引き起こす可能性があります。相対パスに関する奇妙なエラーに実行している場合、この設定がオフになっていることを確認してください。 PHP 5.3以降では、既に、とにかくこれらのコールの速度アップのほとんどを実装しています。

ということでEC-CUBEやWordPressにかかわらず、apc.include_once_overrideは0にしましょう

~~~
apc.include_once_override=0
~~~

コメント

タイトルとURLをコピーしました