0

私が取り組んでいる 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 ファイルの先頭に移動すると、正常に動作します。これは何ですか?

4

1 に答える 1

1

ファイルが含まれている可能性がありますが、このように配列キーを参照すると、未定義の定数に関する警告が常に表示されます

$db[DB_HOST];

それらは次のように参照する必要があります

$db['DB_HOST']

変数が定義されていることが確実な場合は、定数として定義されたものを探すのではなく、キー名を探すように、変数名の前後に '' が含まれていることを確認してください。これは、 then があった場合、 define('DB_HOST','something');それが優先され、$db['DB_HOST']代わりに$db['something']

于 2013-07-29T14:03:38.327 に答える