symfony で XCache の管理ページ認証が出る問題

XCache が有効な環境で symfony を使うと、時々(初回実行時やキャッシュクリア後等に)
XCache Administration というメッセージで HTTP 認証が出ます。
パスワードが違っていると勿論

XCache Auth Failed. User and Password is case sense

となります。
 
このままでは都合がとても悪いので原因と対策を調べてみたところ
symfony framework forum に、この問題についてコメントがありました。
http://www.symfony-project.com/forum/index.php/m/26145/

i tried XCache, APC and eAccelerator. What i discovered is, when the first hit occure (after symfony cc) there is a call for sfProcessCache::clear() in the checkConfig() method (line 201) of the sfConfigCache class. This happens even when using of ProcessCache is not enabled in the configuration.
 
All three of them require a user and password setting to use methods for clearing the cache. eAccelerator use ini settings, xCache require authentication. Thats bad, but not symfonys fault. The result is either a php ‘warning’ (eAccelerator) orthe authentication box popup (xCache) when you hit your app the first time.
 
I helped myself by rewriting the sfProcessCache::clear() and adding few lines. For eAccelerator i’m setting the proper ini settings right before the call of eA’s clearing method, and for xCache by setting $_SERVER[‘PHP_AUTH_USER’] and $_SERVER[‘PHP_AUTH_PW’] before calling xcache_clear_cache(). I read those settings out of the app config YAML, where i added them manually.

とのことで、
sfProcessCache::clear() で xcache_clear_cache() を呼ぶ際に xcache の管理権限が必要なことが原因のようです。
ここに書かれているように自分で

$_SERVER[‘PHP_AUTH_USER’] = ‘XCacheの管理ユーザ名’;
$_SERVER[‘PHP_AUTH_PW’] = ‘ XCache の管理パスワード’;

<pearディレクトリ>/symfony/cache/sfProcessCache.class.php の sfProcessCache::clear()

や、あるいは

<symfonyプロジェクトルート>/web/index.php

などに書き加える事で対処できます。
 
もう一つの解決方法として、XCache 1.2.1 RC1 からの新しい php.ini の設定で

xcache.admin.enable_auth = Off

とすれば XCache の管理認証なしで xcache のキャッシュクリアができるようになります。認証できなくして管理機能を使えなくするのではなく、認証なしで xcache の管理操作ができるようになる事に注意してください。
なお、セキュリティを考慮してなのか .htaccess で

php_flag xcache.admin.enable_auth off

としても無視されます。
 
– 前者はセキュリティ面で少しマシだが、管理面で手間
– 後者は XCache に関して内部のセキュリティを犠牲にするが、楽
 
なので、状況によって使い分けるのがよさそうです。