2010-12-14 144 views
0

所以我有兩個完全相同的項目副本。服務器的配置是相同的。該腳本必須將一些數據寫入數據庫,然後根據寫入數據庫的數據將用戶重定向到具有header()函數的適當頁面。php項目在linux服務器上工作,但不在windows上

它可以在Linux服務器上正常工作,但是在Windows中它首先嚐試重定向,然後寫入數據庫,當然這不起作用,因爲沒有數據寫入。如果我在Windows版本中註釋掉header()函數,它會寫入數據庫,但不會執行重定向。

兩個精確腳本如何工作如此不同?

編輯:

我不知道我該怎麼辦顯示代碼,因爲有這麼多的它,它是如此分散。但基本上,這只是一個函數,它設置了header()以及寫入db的函數。當它重定向時,它應該選擇寫入數據庫的數據並顯示它。

這是一個非常簡化的版本。請記住,在寫入數據庫之前,將設置header。我相信這是罪魁禍首,但我沒有編寫代碼,我也無法改變它的架構,因爲它在2臺Linux服務器上完美工作,我只是不明白。我只需要使它在Windows服務器上工作。

它使重定向正常,我的意思是它發送給我應該發送給我的鏈接,但它不寫入數據庫。但是我註釋掉了header()部分,它寫入到數據庫中,但沒有進行重定向。

+6

您應該將問題分解爲一行或一段代碼,然後發佈。沒有它,就不可能提供好的信息 – 2010-12-14 13:02:56

+0

他們是否在相同的版本上運行相同的Web服務器,具有相同的選項? – 2010-12-14 13:03:04

+2

你能告訴我們一些代碼嗎?特別是你提到的標題代碼,你註釋掉了。 – JohnSmith 2010-12-14 13:07:32

回答

0

由於某些原因,我只能在WampServer和PHP 5.2.4上運行。

0

嘗試增加一個if語句是這樣的:

if(mysql_query('...') && mysql_affected_rows()){ 
    header("Location: redirectScript.php");exit(); 
} 

希望這有助於...

+0

但是這並沒有解決爲什麼它在一臺服務器上工作的更深層次的問題,而不是在另一臺服務器上工作呢? – 2010-12-14 13:16:14

+0

是真的,但可能導致他在一條好路徑上。 – Catalin 2010-12-14 13:19:12

0

documentation for the header function狀態如下:

注:

HTTP/1.1 »位置:包括需要一個絕對URI作爲 參數方案,主機名和絕對路徑, 但有些客戶端接受相對URI。 通常可以使用 $ _ SERVER [ 'HTTP_HOST'], $ _ SERVER [ 'PHP_SELF']和目錄名()來 從相對 一個自己做的絕對URI:

您使用的是相對網址是什麼? LAMP可能比WAMP更喜歡相對URL。這是一個簡單的測試,所以值得一試。

+0

它使鏈接和重定向好,它只是不顯示任何數據,因爲沒有寫入數據庫。 – donkapone 2010-12-14 18:44:58

相關問題