私が取り組んでいる Web サイトがあります。かなり単純ですが、MySQL データベースを使用しています。このサイトの初期開発は、Apache 2.2.25、PHP 5.4.17、および MySQL 5.1 を使用して Linux で行いました。このサーバー スタックでは、すべてが正常に機能しました。ただし、最新の WAMP サーバーを使用すると、Windows で信じられないほど奇妙なエラーが発生します。このサイトには多数のファイルが含まれていますが、インデックス ページに関する限り、インクルードの基本的なレイアウトがあります。
index.php
->header.php
--->connection.php
--->functions.php
->footer.php
インデックス ページをロードすると、mysqli を使用して SQL 接続を開く関数を含む、すべてのサイトおよびデータベース関数を含む functions.php と同様に、ヘッダーが正しく含まれています。ただし、サーバー情報の定義を含む connection.php は、ページがロードされたときにまったく読み取られないようです。次のようなエラーが表示されます
"注意: 未定義の定数 DB_HOST の使用 - 2 行目の D:\wamp\www\functions.php で 'DB_HOST' を想定",
これらは確実に connection.php で定義されており、connection.php が最初に含まれていますが。また、次のようになるように、インクルードを再編成しようとしました。
index.php
->header.php
--->functions.php
----->connection.php
それも問題を変えませんでした。テスト目的で、connection.php に die() と mail() を追加してみました。そのファイル内の何も実行されていません。この正確なコードとファイル レイアウトが LAMP スタックで問題なく機能したことを繰り返したいと思います。理由がないように見えるので、なぜこれが起こっているのかわかりません。
編集:これは私の元の投稿にあるはずです。私の定義 (connection.php 内) のコードは次のとおりです。
define("DB_NAME", "lyricsdb");
define("DB_USER", "lyricsdb");
define("DB_PASS", "XXXXXXXXX");
define("DB_HOST", "localhost");
これらの定数は、functions.php の次の関数で参照されます。
function sql_connect($db_host = DB_HOST, $db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME) {
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name) or die('Could not connect to database.');
return $con;
}
編集 2: 定義を functions.php ファイルの先頭に移動すると、正常に動作します。これは何ですか?