我有一個網站,我正在工作,它是相當簡單的,但它使用MySQL數據庫。我使用Apache 2.2.25,PHP 5.4.17和MySQL 5.1在Linux中初始開發了這個站點。在這個服務器堆棧上一切正常。但是,我在Windows上使用最新的WAMP服務器出現令人難以置信的奇怪錯誤。有許多參與本網站的文件,但只要索引頁去,有包括一個基本的佈局:WAMP服務器沒有閱讀包括PHP文件
index.php
->header.php
--->connection.php
--->functions.php
->footer.php
當我加載索引頁,肯定是被包括在頭正常,就像functions.php一樣,它包含了所有的站點和數據庫函數,包括使用mysqli打開SQL連接的函數。但是,包含爲服務器信息定義的connection.php在加載頁面時似乎根本沒有讀取。我得到的錯誤,如
「通知:未定義的常量DB_HOST用途 - 假設 'DB_HOST' 在d:\ WAMP \ WWW \ functions.php的第2行」,
即使這些都是在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文件的頂部。我甚至沒有甚麼?
我忘了在我原來的帖子(我的意思是)包括這個,但我的常量定義的方式是這樣的: 'define(「DB_NAME」,「lyricsdb」); define(「DB_USER」,「lyricsdb」); define(「DB_PASS」,「XXXXXXXXXX」); 定義( 「DB_HOST」, 「本地主機」);' 而作爲這樣的參考: '函數sql_connect($ DB_HOST = DB_HOST,$ DB_USER = DB_USER,$ DB_PASS = DB_PASS,$ DB_NAME = DB_NAME){ \t $ con = mysqli_connect($ db_host,$ db_user,$ db_pass,$ db_name)或die('無法連接到數據庫。'); \t return $ con; }' – NeuroXc
你可以更新你的問題,包括該信息以及每個位在哪個文件中 – Anigel
是的,我繼續編輯原始帖子。 – NeuroXc