0

私のサーバー環境がcentos 6.3を実行している仮想マシンによってエミュレートされ、開発がホストOSから行われる開発環境をセットアップしようとしました。アプリケーション コード (codeigniter アプリ) は、/home/foo/Desktop/code/app にマウントされた共有フォルダーにあり、このアプリケーションを提供するために apache で仮想ホストを作成しました。

開発側では、git を VCS として使用します。

問題は、ヘルパーをロードするときに 2 つのファイルが含まれることです。たとえば、アプリケーション/ヘルパーに my_date_helper という名前のヘルパーがあります。2 つの機能があります。このヘルパーをオートロードします。

このアプリケーションの php を実行すると、このエラーがスローされます

Fatal error: Cannot redeclare time12to24() (previously declared in /home/mlakhara/code/cosys/application/helpers/my_date_helper.php:9) in /home/mlakhara/code/cosys/application/helpers/MY_date_helper.php on line 11

関数にコメントすると、関数が未定義であると表示されます。

また、時間関連の関数は、date.timezone オプションを使用して php.ini ファイルに既にあるタイムゾーンを設定するようにという警告をスローします。

これらの 2 つのファイルは、異なる名前で 2 回同じように含めることができると想定しましたが、行番号は別のものを示唆しています (関数は別の行で宣言されています)。

通常のフォルダー (非共有) から提供される場合、アプリケーションは正しく機能します。vn から git を削除して試しましたが、違いはありませんでした。

何が問題になる可能性がありますか?

---------------編集 ----------------------- マグナス・エリクソンの答えからヒントを得て、私は実際のパスと日付ヘルパーをロードする代わりに、これらの「拡張」ヘルパーを自動ロードしていました。これにより、同じ関数のコピーが 2 つ取得されます。ただし、タイムゾーン設定の問題は引き続き発生します。

是正措置として、時間の値も .htaccess ファイルに追加しました。ただし、それを行うより良い方法はありますか。

4

2 に答える 2

2

ファイル名の「my_」を削除してみてください。CodeIgniter は "MY_" を使用してコアを拡張し、大文字と小文字の両方でテストを行うため、同じファイルを 2 回ロードする可能性があります。

いずれにせよ、Rob W が指摘したように、常にヘルパー関数をif (!function_exists()) {}

タイムゾーンの問題について: あなたの php.ini やセットアップを見たことがないので、なぜ機能しないのかわかりません。date_default_timezone_set('UTC');解決策の 1 つは、index.php に最初に (または必要なタイムゾーンを)追加することです。

クライアントの実動サーバーで php.ini を変更するアクセス権が常にあるとは限らないため、通常はそれを追加します。

于 2013-06-04T20:55:56.990 に答える