2014-02-25 105 views
0

我知道這已被問了一百萬次,但我已經通過所有的答案無濟於事,因爲我只有少量的代碼,我想這是一個相對簡單的修復(我希望)。令人沮喪的是,php文件在一臺服務器上完美工作,而不是另一臺。PHP - 警告:無法修改標題信息 - 仍然卡住

我收到此錯誤:

Warning: Cannot modify header information - headers already sent by (output started at /home/thepcguy/public_html/ship_image/functions/function-redirect.php:1) in /home/thepcguy/public_html/ship_image/functions/function-redirect.php on line 9 

與本文件

<?php require_once('../Connections/ships.php'); 

if ($_GET['shore'] == "1") { 
    header('Location: ../shore_establishment.php?ship_id=' .urlencode($_GET['ship_id']) . "&shore=1" . "&page=ship"); 
    //echo"first"; 
} else if ($_GET['shore'] == "0") { 
    header('Location: ../shipinfo.php?ship_id=' .urlencode($_GET['ship_id']). "&shore=0" . "&page=ship"); 
    //echo"second"; 
}; 

?> 

爲了利益着想,文件ships.php是:

<?php 
$hostname_ships = "xxxxx"; 
$database_ships = "xxxxx"; 
$username_ships = "xxxxx"; 
$password_ships = "xxxxx"; 
$ships = mysql_pconnect($hostname_ships, $username_ships, $password_ships); 
?> 
+0

我會檢查一個,但我看過幾個結果。謝謝 – user2406993

+0

function-redirect.php的第9行是什麼?你確定你在ship.php中沒有任何輸出(甚至是空格)? –

+0

在你的一個文件的開頭或結尾可能有一個空格,你也想在設置你的重定向後用'die'結束當前腳本。 – cmorrissey

回答

4

最有可能你得到mysql_ *已被棄用的通知,並且這實際上被輸出到您的瀏覽器,因此您不能發送標題罪ce輸出已經發送...

也許一個服務器不發送通知,其他服務器,這就是爲什麼它在一個,而不是其他。爲了測試這個設置作爲一線在你的文件:

error_reporting(E_ALL^E_DEPRECATED);

+0

感謝Dexa,我在打開<?php後直接添加了該代碼,並且完全不會改變輸出。這是好還是壞? – user2406993

+0

你的意思是說它不會改變輸出?你仍然收到警告? – Dexa

+0

是啊完全一樣的警告 – user2406993

0

你可以嘗試使用ob_start()在頂部,並添加使用ob_flush()在腳本的結尾。看看是否有幫助。

+0

試過傑米,無濟於事:-( – user2406993

0

本着同樣的精神來的Dexa的回答是:

如果$_GET['shore']$_GET['ship_id']未設置你會得到一個PHP通知。哪個會開始輸出。

相關問題