2013-07-29 35 views
0

我有一個網站,我正在工作,它是相當簡單的,但它使用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文件的頂部。我甚至沒有甚麼?

回答

1

這是有可能被列入你的文件,但你總是會得到有關未定義的持續警告如果引用這樣

$db[DB_HOST];

他們應該

引用

$db['DB_HOST']

數組鍵

如果你確定你的變量是被定義的,那麼檢查你是否在變量名的周圍包含了',以便查找關鍵字名稱,而不是尋找那些被定義爲一個常數。這只是警告你,如果有define('DB_HOST','something');那麼這將優先於您的$db['DB_HOST'],它會改爲尋找$db['something']

+0

我忘了在我原來的帖子(我的意思是)包括這個,但我的常量定義的方式是這樣的: '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

+0

你可以更新你的問題,包括該信息以及每個位在哪個文件中 – Anigel

+0

是的,我繼續編輯原始帖子。 – NeuroXc