2012-01-10 251 views
2

我有一個應該運行的一些代碼,像這樣以後重定向到另一個文件一個簡單的PHP腳本:服務器沒有運行PHP腳本

if...{ 
     $_SESSION['username'] = $_POST['username']; 
     $_SESSION['login_status'] = true; 
     header('location: index.php'); 
    } 
    else{... 

該腳本適用於我已經嘗試過的服務器之一罰款而不是另一方。因爲看起來其他服務器沒有進入「標題」行,只是停止了一半。我留下來的只是一張空白頁,上面有一頁的標題。這是爲什麼?有任何想法嗎?

運行該腳本的服務器上的PHP版本是5.1.6,該服務器不是4.3.9,不是我認爲與它有任何關係。

+0

如果您可以在瀏覽器中打開錯誤報告和「查看源代碼」。如果header()之前有任何輸出,則腳本將停止。 – 2012-01-10 17:06:05

+0

你檢查過響應頭嗎?它是'200 OK'嗎?或者可能是內部服務器錯誤發生?另外,您應該確保將錯誤配置爲顯示。檢查'error_reporting'和'display_errors'的設置... – 2012-01-10 17:06:33

+0

聖盃!一個六歲的[PHP版本](http://www.php.net/ChangeLog-4.php#4.3.9)?! – konsolenfreddy 2012-01-10 19:54:25

回答

0

運行與錯誤報告你的代碼,這樣你會得到有關錯誤

error_reporting(E_ALL); 

一些線索見PHP Error reporting

+0

仍然不知道是什麼導致了這個問題,但錯誤報告確實做了竅門。我得到了一個錯誤消息,在行:「頭已發送」 。我將php和html部分渲染成了相同的php文件,瞧,它在兩個服務器上都能正常工作... – Matte 2012-01-16 08:54:16

+0

好吧,當它在行標題之前呈現時可能會創建一個空白空間( 'location:index.php');也許你可以在代碼中驗證上述所有代碼時找到它:) – 2012-01-17 03:26:37

1

你是否開始了會話?或者你的服務器可能配置錯誤。 閱讀日誌。

+0

會話已開始,問題與頭文件被多次發送有關,其他服務器看起來並不贊同。但是,感謝您的回覆! – Matte 2012-01-16 08:55:43

1

檢查php設置是否啓用session.auto_start

此外,它可能是舊版本的PHP不知道如何解析location: ...字符串。 所以將其更改爲大寫(所以它符合HTTP規範):

header('Location: index.php') 
+0

正如您從上面看到的那樣,問題似乎與頭文件有關,但沒有使用的標準...感謝您的回覆,雖然! – Matte 2012-01-16 08:56:43