やっぱり環境設定の違いか……

iMac G5の『白虎』で作成したPHPプログラムをdynabookの『アレス』でそのまま実行した結果、以下のようなエラーメッセージが表示されました。

1.Warning: require_once() [function.require-once]: Unable to access ……

2. Notice: Undefined index: ……

3. Warning: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in ……

4. Strict Standards: mktime() [function.mktime]: You should be using the time() function instead in ……

5. Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in ……

まぁ、3~5番はセットみたいなものでしょうね(^_^;)
とにかく順番に解決していきましょう。

まず1番はパッと見で原因が思い当たりました。
「……にアクセス出来ない」と言ってるので、呼び出し元のファイルから辿っていくと……「お買い物ポイント情報管理システム」のフォルダだけコピペして、他のシステムでも利用出来るようにと思って作った共通フォルダをコピペし忘れていました。
そりゃ、アクセス出来る訳ないよな。そこにファイルがないんだから……(-_-;)
更に、パスの設定がMacとWinでは記述の仕方が異なってるし、フォルダ構造も違ってるので、そこら辺も修正が必要でした。
ユーザの標準的なフォルダの場所は、Macでは"/Users/ユーザ名/……"だけど、Winでは"ドライブ名:\Users\……"です。

これで、ファイルが見つからない問題はとりあえず解決。

と言う訳で、次は2番の問題へ。
エラーメッセージをコピペしてネット検索を掛けた結果、これは連想配列にアクセスした際に指定したキーが存在しない場合に出るエラーだということが解りました。
パラメータもフォーム入力もない初期画面や、絞り込みを行わない状態でデータを表示すると、当然のことながらまだ変数が存在しなかったり値がセットされていないので、これが出ることになります。
存在するかしないかで処理が分岐させる必要がある部分(主に内部処理プログラムのファイル)では、存在確認をしてましたが、それ以外のところは厳密には作りこんでなかったので、結構あちこちで引っかかりました。
表示系のファイルは全滅ね(-_-;)

直し方は難しくないものの、修正個所の洗い出しが結構面倒だなぁ、と思っていたら、何やらphp.iniの設定でこのエラーをスルー出来ることが判明しました。…って言うか、インストール直後のデフォルトはこのエラーは表示されない設定になっているという記述が沢山あったんですけどね(-_-;)q

仕事として作るならすべてのエラーを表示するようにして、プログラム側でエラー処理するべきなのは解ってますが、このシステムはLUNAがローカルで使うだけなのでそこまでする必要性は感じません。
よって、php.iniを以下のように編集しました。(赤字が追加内容)

;error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL & ~E_NOTICE | E_STRICT

この対処法が見つかる前に、数ヵ所はプログラムの方をちまちまと直してみましたが、残りはもう直しません。
ひとまず、この問題も解決です。

そして3番と4番の問題はやはりセットでした。
PHPのバージョンが上がったことで、mktime()が引数なしでは使えなくなったそうです。
代わりにtime()を使うようにとの記述が見つかりました。
そんな訳で、プログラムを以下のように修正しました。(赤字が修正箇所)

修正前) $today = date("Ymd", mktime() );
修正後) $today = date("Ymd", time() );

これで2つまとめて一気に解決です。

そして5番は、タイムゾーンが設定されていないと言うエラーだったので、php.iniを以下のように編集しました。(赤字が追加内容)

;date.timezone =
date.timezone = Asia/Tokyo

MacとWin、あとはPHPのバージョンによるデフォルト設定の違いって、やっぱりいろいろあるんですね。
でも、とりあえずこれでマシン環境の差異によるエラーは大体修正出来たかな?(@_@。

システムが正常に動くようになったなら、次はデータの修正だ。
この半年でポイント付与が終了したり、ポイント数が変わったりしたところがあったような気がするので、チェックして回らねば……。

ぃや、プリンタとスキャナの設定が先か?(汗;)

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント