2014-10-04 34 views
0

感謝您的閱讀時間。我不是一個程序員,但是由於我的技能有限,我已經能夠確定在幾乎每一頁開頭都調用的這個函數正在使我們的商店POS腳本失敗。當我們爲這個PHP應用程序獲取url時,我們只得到一個空白頁面。當這個函數的調用被註釋掉時,頁面加載得很好。任何想法爲什麼這段PHP代碼讓我的腳本掛起?

有趣的是,我們的代碼沒有改變,並且已經使用了3年以上。幾天前剛剛停止工作,我們的虛擬主機無用。他們一直無法告訴我服務器環境是否有任何變化,所以我不知道從哪裏開始尋找信息。我的同事懷疑他們可能已經改變了正在使用的PHP版本,但我不知道哪個版本可能在此處列出的版本之前。

服務器信息 -Apache版本2.2.29

-PHP版33年4月5日

-MySQL版37年5月5日-CLL

-architecture x86_64的

- 操作系統的Linux

// new version for SEO htaccess short url's 
Function MakeSecure(){ 
    if($_SERVER['HTTPS'] != "on"){ 
     $URI = $_SERVER['REQUEST_URI']; 
     $strSiteLocation = "https://" . str_replace("/","",DOMAIN) . $URI; 
     header("Location: " . $strSiteLocation); 
    } 
} 
+0

@ l'L'l可能是一個'const' – 2014-10-04 19:25:30

+2

您檢查過$ _SERVER ['HTTPS']具有的值嗎?根據文檔,任何非空值(不僅僅是「on」)都應該表明協議是https。 – Bart 2014-10-04 19:30:13

+0

在文件的頂部設置它以顯示PHP拋出的所有錯誤。 '的error_reporting(E_ALL); ini_set('display_errors','1');'。請注意,您最好在開發環境中執行此操作,而不是在實時網站上執行此操作。 – Bono 2014-10-04 19:48:20

回答

0

因此,PHP從5.3升級到5.4,普通類通過引用傳遞變量,這在5.4中是不允許的。改變了普通班線從

$cp = fsockopen (SMTP_HOST, SMTP_PORT, &$errno, &$errstr, 1);

$cp = fsockopen (SMTP_HOST, SMTP_PORT, $errno, $errstr, 1);

現在的網站加載的罰款。感謝所有參與者!

+0

您應該將自己的答案標記爲已接受,以關閉問題。 如果他們打算升級你的平臺而沒有通知,你還應該找到一個新的虛擬主機! – miken32 2014-10-06 22:44:26

1

除非你有將DOMAIN設置爲其他地方的常量,它不會在任何地方重定向。既然你說這是你的代碼的頂部,我懷疑是這樣。

爲了證實這一點,與呼叫替換最終header()調用echo()(輸出到瀏覽器),或者error_log()(輸出到Web服務器的日誌文件)來代替。這會告訴你它試圖重定向你的位置;我認爲這不會是一個有效的網址。

+0

時得到的行15'define(「DOMAIN」,「domain .com /「);'當我改變標題回聲時,我無法獲得任何輸出。我想重申一下,這個代碼已經工作了3年多,沒有任何問題或者變化來煽動這個。感謝您的時間! – user2150091 2014-10-04 23:06:05

+0

然而,你說當你註釋掉這段代碼時,頁面工作正常嗎?由於有三行代碼,其中兩個是簡單的字符串操作,所以'header'調用看起來就是問題。更新您的問題,在頁面上包含實際的代碼,顯示在上下文中調用的位置。 – miken32 2014-10-04 23:24:24

+0

該功能在多個頁面上調用,因此在修復此問題時會在一個頁面上修復問題,您單擊的任何鏈接移至另一頁面都會導致空白屏幕。這不是最近添加的內容,我只是在index.php開始的鏈之後註釋掉部分代碼,試圖找出造成這個問題的原因。請承擔我的責任,因爲我已經說過我沒有資格自己解決這個問題。這將是很多代碼發佈,因爲它像一個鏈和4-5頁在這裏進行交互。發佈300行代碼是否合適? – user2150091 2014-10-04 23:33:06

相關問題