2010-04-25 59 views
24

這是我的文件。我想讓它重定向,但沒有任何反應。要檢查發生了什麼,我在標題部分之前添加了一個回顯。PHP標題位置重定向不起作用 - 爲什麼?

它既不會引發錯誤或重定向到index.php。哪裏不對? 我已經打開/關閉輸出緩衝,但沒有使它重定向。我能做什麼?

<? 
error_reporting(E_ALL); 
echo 'This is an error'; 

header("Location: login.php"); 
die(); 
?> 

感謝

+1

是* display \ _errors *是否啓用? – Gumbo 2010-04-25 21:39:29

+0

@Gumbo - 當然是! – Industrial 2010-04-25 21:42:44

+3

您提供的代碼是否至少輸出'這是一個錯誤'? – timdev 2010-04-25 21:48:01

回答

1

我提醒自己,我已經在實際的測試環境中安裝了XDebug和谷歌上搜索之後,我發現這個網站:http://bugs.xdebug.org/view.php?id=532

所以我會下載xDebug的最新版本,並相應地更改了php.ini文件,所有內容都像魅力一樣。標題正在發送 - 重定向完成並顯示錯誤。

謝謝大家的幫助!

43

PHP documentation

header()必須在發送任何實際輸出之前調用,無論是普通的HTML標籤,在一個文件中的空行,或PHP。

而在你的情況,你正在使用echoheader()

+0

我知道這就是爲什麼我在header() - call之前做出回聲。它在其他服務器上發生錯誤,應該這樣做。爲什麼沒有發生? – Industrial 2010-04-25 21:40:58

+7

改變標題的替代方法是使用:'<?php echo「」?>' – 2012-11-10 23:19:23

1

之前您是否啓用短標記? 與長標籤<?php嘗試:

<?php 
error_reporting(E_ALL); 
header("Location: login.php"); 
die(); 
?> 
+0

是的,我確實有短標記設置啓用,罰款,除了標題的東西... – Industrial 2010-04-25 22:16:50

0

是否啓用了display_errors?
@Gumbo - 當然是!

好吧,它肯定不是。因爲

要檢查發生了什麼,我在標題部分之前添加了一個回顯。

如果您啓用了display_errors,它將顯示錯誤,至少在您turned output buffering on時。

所以,首先確保你可以看到錯誤信息。
剛剛打印出一個未定義的變量,

error_reporting(E_ALL); 
echo $undef9306; 

我相信你不會看到它。 所以,你必須打開顯示錯誤

接下來,在服務器端,您可以使用headers_sent()函數來查看是否發送標頭。在客戶端使用HTTP嗅探器來查看是否發送了任何東西

然後檢查文件的BOM。

+0

嗨。恐怕不是。 Display_errors被啓用,但它是xDebug導致這...感謝您的幫助上校! – Industrial 2010-04-26 15:09:35