我的開發服務器在PHP 5.3.8上順利運行我的PHP Web應用程序。在一臺服務器上工作的PHP代碼,不在另一臺服務器上
然而,從PHP 5.2.6升級我的PHP時生產服務器5.3.8我有幾個問題,這個應用程序,它迫使我命令回滾到5.2(約棄用功能ereg_replace
和失蹤date.timezone
設置投訴) 0.6。
相同的PHP代碼如何在一個5.3.8服務器上正常工作,而不是另一個?這種行爲的常見原因是什麼?有什麼建議麼?
我的開發服務器在PHP 5.3.8上順利運行我的PHP Web應用程序。在一臺服務器上工作的PHP代碼,不在另一臺服務器上
然而,從PHP 5.2.6升級我的PHP時生產服務器5.3.8我有幾個問題,這個應用程序,它迫使我命令回滾到5.2(約棄用功能ereg_replace
和失蹤date.timezone
設置投訴) 0.6。
相同的PHP代碼如何在一個5.3.8服務器上正常工作,而不是另一個?這種行爲的常見原因是什麼?有什麼建議麼?
請在兩臺服務器上訪問php.ini(PHP配置文件)。 查找該行「; display_errors」
請在之後比較以下幾行。
這些可用於三個設置可變的選項:
; display_errors
; Default Value: On
; Development Value: On
; Production Value: Off
; display_startup_errors
; Default Value: Off
; Development Value: On
; Production Value: Off
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
注意:從我們在OP中讀取的內容來看,配置是錯誤的。開發服務器應該有強烈的錯誤報告,而生產服務器應該保持沉默。 – Kaii 2011-12-21 12:13:59
謝謝。生產服務器上有'display_errors = On'。顯然,這看起來像一個錯誤的配置。但我不確定這些消息是否會「STDOUT」實際上會導致應用程序崩潰,正如我正在經歷的那樣。他們不會只是作爲控制檯消息出現嗎? – Gruber 2011-12-21 12:21:24
您可以在日誌文件上記錄錯誤。記錄錯誤的設置位於「php.ini」中的錯誤報告行之下。在設置的可選值之後。 '; log_errors ;默認值:關閉 ;開發價值:在 ;生產值:在 ' – IvenMS 2011-12-21 12:24:07
PHP是一種不斷演變的語言,對Java或c#來說也是如此,所以這意味着如果某些函數不被棄用並且相應地更新代碼,就必須檢查文檔。
此外,您還必須確保您的PHP設置在兩臺服務器上都相同。
如果檢查ereg_replace
文檔有這樣的導語:
警告此功能已被棄用的PHP 5.3.0的。依靠 這個功能是非常不鼓勵的。
是的,配置文件'php.ini'是一個主要的嫌疑犯。我會花更多時間來調查這一點。爲了避免更多的生產服務器回滾,我將在_new_服務器上部署應用程序,在升級過程中退出舊版本。 – Gruber 2011-12-21 12:35:14
您的錯誤級別設置與您的計算機上的設置不同。
FYI:
ereg_replace已被廢棄,用強烈勸阻
每次調用日期/時間函數,如果 時區是無效的會產生一個E_NOTICE,和/或者使用系統 設置或TZ環境變量的E_WARNING消息
是的,這是一種可能性。不幸的是,當事情崩潰時我不得不考慮太快,所以我沒有時間調查回滾之前'php.ini'設置的外觀。但是,在升級設置之前_request_reporting = E_ALL&〜E_NOTICE,我不希望升級修改這些設置。感謝您的幫助! – Gruber 2011-12-21 12:11:09
你是完全的肯定你的開發服務器運行PHP 5.3.8? 所有ereg_*
函數在PHP 5.3.X中都不推薦使用,因此您的代碼不應在沒有任何警告的情況下在PHP 5.3上運行。如果是這樣,那很奇怪,因爲您的開發服務器應該生成比生產服務器更多的警告(例如E_ALL
)。檢查您的錯誤報告設置php.ini
。 (display_errors
,error_reporting
)
爲了讓它飛起來,您應該真的搜索任何發生的ereg_*
,並用preg_*
替代這些表達式。
date.timezone可以在您的php.ini
中設置。在那之後,我看不到爲什麼你的PHP 5.2.6代碼不能在5.3.6上運行。
的錯誤處理可能水平是在你的開發VS督促服務器不同 - 即同樣的問題,只是一些沒有開發可見。 – ChelseaStats 2011-12-21 12:00:23