2010年12月30日木曜日

[PHP] 「Cannot redeclare」でハマる

「Cannot redeclare」というエラーでハマりました。

下記の構成のデータで起こったのですが、簡単な関数を作成して再現しようとしても再現できず、結局原因は分からず。

FuncBの定義をFuncAの外に出す事で回避しました。

■表示用ページPHPデータindex.php
<?php require_once('hoge.php') ?>

■require_onceで呼び出している外部PHPデータhoge.php
<?php
$a = "A";
$b = "B";
function FuncA($a, $b){
    $c = "C";
    $d = "D";
    function FuncB($c, $d){
        &#65374;実行処理&#65374;
    }
    FuncB($c, $d);
}
FuncB($a, $b);
?>

構成は上記と通りですが、実際には多数の処理が入っています。
しかし、ループ内でもなければ、同じ名前で二度定義もしていない、require_once文もべた書きで二重にはなっていない、include文にしても変化無し・・・と、検索して調べた原因には全て該当せず。

しかも、上記の通りの簡単な関数では再現できず・・・時間が無いのでここまで。
残念。

[PHP] 「It is not safe to rely on the system's timezone settings.」でハマる

「It is not safe to rely on the system's timezone settings.」というエラーでハマりましたが、解決。

結論からいいますと、php.iniの「;date.timezone =」を「date.timezone = "Asia/Tokyo"」に変更。
(コメント化を解除して、"Asia/Tokyo"を追加です。)

これまで何度もPHPのインストールは行っていますが、このエラーは今回初です。
最近のバージョンアップで何か変わった?
インストール時に何か設定見落としたかなぁ・・・。

ググって出てきた以下のサイトの通りでした。ありがとうございます。

[参考]
It is not safe to rely on the system's timezone settings.: 気まぐれ底辺プログラマ -