動いてるプログラムを別環境に持って行ったら「Cannot redeclare」が出た。元環境の方では特にエラーは出てなかったんだけど、元環境の方もAPCを外してみたら同じエラーが出るようになった。
現象としては func.php に hoge() の定義があったとして、index.php から func.php を複数回 include() してもエラーにならない。
とりあえず function_exists() で二重定義しないようにしたけどさ。。
動いてるプログラムを別環境に持って行ったら「Cannot redeclare」が出た。元環境の方では特にエラーは出てなかったんだけど、元環境の方もAPCを外してみたら同じエラーが出るようになった。
現象としては func.php に hoge() の定義があったとして、index.php から func.php を複数回 include() してもエラーにならない。
とりあえず function_exists() で二重定義しないようにしたけどさ。。
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^0\.0\.0\.0$
RewriteRule ^.*$ - [F]
これで403が返せる。
LogFormat に %{cookie-name}C でいいのね。
http://www.php.net/manual/ja/function.srand.php を見ると、
注意: PHP 4.2.0 以降、 srand() または mt_srand() によりランダム数生成器にシードを与える必要はありません。 これは、この処理が自動的に行われるためです。
と、あったので、どんなもんかと検索してみたところ http://d.hatena.ne.jp/yoya/20080807 に行き着いた。
で、実際どうなってるんだ?と思いソースを調べてみた。
/ext/standard/rand.c の65行目に
php_srand(GENERATE_SEED() TSRMLS_CC);
があって、これが /ext/standard/php_rand.h の 52行目の
#define GENERATE_SEED() ((long) (time(0) * getpid() * 1000000 * php_combined_lcg(TSRMLS_C)))
で、php_combined_lcgは /ext/standard/lcg.c にあって、そこからlcg_seed()に行き着いたんだけど、
if (gettimeofday(&tv, NULL) == 0) {
LCG(s1) = tv.tv_sec ^ (~tv.tv_usec);
} else {
LCG(s1) = 1;
}
以下の部分でなぜランダムになるのか良くわからず。。
今こんなのあるんだね。インテル純正。
URLに最後の”/”まで含むかたちで設定すると、きちんと設定できたように見えるんだけど、いざ編集しようとしてみると「Communication Error」でまともに使えないみたい。
結構悩んだあげく、URLの最後の”/”を消してみたら(このブログだと http://labo.samuraistyle.org/blog )なぜか解決。
(もしかしたらこの現象はサブディレクトリで運用している場合のみかも)
ページキャッシュだとSuper Cacheってプラグインが有名っぽいんだけど、行けるところまでダイナミックに行きたいと思ってオブジェクトキャッシュの方に挑戦。
オブジェクトキャッシュだと次のストレージを使うドライバが見つかった
memcachedとTokyo Cabinetはインストールが面倒だったので今回はパスw ファイルの方は古いバージョンでの事例しか見つからなかったのでパス。ということで今回はAPCにしてみた。
参考: http://se-suganuma.blogspot.com/2010/07/wordpressapcobject-cache.html
まずは全体的なところから
続きを読む Amazon EC2のMicro InstanceにAmazon Linuxをインストールしてからやったこと
AllowOverride FileInfo
が必要。いつも忘れるので。。
原因はSELinux。。止めちゃいたいところだけど、そうもいかなかったので
ls -lZ
で確認後
chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t {$module_name}.so
でOK。