2011-09-19 74 views
0

我有由以下結構的PHP文件:沒有加載PHP文件正確

<html>... headers, scripts & styling 
... some html here 
<?php 
    if($_GET['v'] == 1) 
    { 
?> 
    ... html code here ... 
<?php 
    } 
    else 
    { 
?> 
    ... html code here ... 
<?php 
    } 
?> 
</html> 

有時文件只是用來加載一半,例如,如果v=1什麼會加載到屏幕(如果我View Source也檢查)是這樣的:(相對於我上面的例子)

<html>... headers, scripts & styling 
... some html here 
    ... html cod 

正如你所看到的,代碼只是隨機切斷。這並不是什麼明顯的例子,如循環或任何東西。它發生在HTML代碼的中間,而不在<?php ?>標籤內。

它看起來好像服務器只是決定停止在那裏,然後無緣無故的溝通。它也發生在每次不同和隨機的地方,有時加載完美。

它也只發生在我的共享主機帳戶,而不是我的localhost

有沒有什麼簡單的事情可能導致這種情況? 以前有沒有人遇到過這個?

+0

你能分享一個鏈接,以便我們可以用我們自己的瀏覽器測試它並運行數據包捕獲工具嗎? – phihag

+0

不,抱歉 - 它位於網絡應用程序的控制面板內。 – LouwHopley

+0

然後你可以創建一個pcap轉儲(例如[wireshark](http://wireshark.org))並上傳它? – phihag

回答

2

您的代碼會產生一個警告(顯然沉默),並在這裏失敗:

if($_GET['v'] == 1) 

如果沒有v參數在查詢字符串給出。

做這樣的:

if(isset($_GET['v']) && $_GET['v'] == 1) 

如果您運行的是舊版本的PHP,你必須讓兩個獨立的,如果每個的兩個條件語句。

+0

不,如果它是靜默錯誤,它會跳轉到其他地址 – genesis

+0

我認爲這取決於錯誤報告配置。 – thwd

+1

沒有。當錯誤被抑制時,它被抑制,但仍然有效。這只是一個通知/警告,腳本不會停止 – genesis

2

確保您已打開display_errors

ini_set('display_errors',1); 

只是爲了確保沒有什麼可怕的錯誤。

+0

會盡快試用,謝謝。 – LouwHopley

+0

Ag人。現在它不再提出這個問題了 - 當客戶使用它時就害怕它發生。 – LouwHopley

+0

這很正常。如果您的顯示器錯誤處於非活動狀態,如果出現錯誤,代碼執行將停止。您還應該檢查代碼源,而不是隻查看生成的可視化輸出。有時並取決於瀏覽器可能不會顯示錯誤。 –