2012-05-10 19 views
1

我有一個主要使用php構建的網站。我的問題是在頂部我有一個背景圖像的div。它必須在一個非常特定的地方。每次出現PHP錯誤時,div都會向下移動,這會使頁面看起來很糟糕。與網站外觀混亂的PHP錯誤

我可以想到兩種可能的解決方案,但我不知道如何去做,而搜索網絡卻一直沒有成果。

  • 使它所以PHP的錯誤犯規推DIV下(i試圖浮動,但在div中有其他的事情,必須在左側,而圖像右側)

  • 使php錯誤出現在其他地方。 (我不知道該怎麼做,也找不到任何東西)

我使用codeigniter。謝謝您的幫助。

+0

花一些時間在你的'php.ini'文件 - 搜索「錯誤」的文件,並通過評論讀取。 – Madbreaks

+5

另外,實際修復錯誤通常是一個好主意。 – Mahn

+0

我知道這是一個好主意,但有些是無法預料的。如果我看到一個我修復它。 –

回答

1

以上所有的答案都產生PHP代碼笨的正確方法。

但是要回答你的問題,如果你有個人喜好,你可能想要嘗試使用z-index屬性,當你定義圖像的CSS。

它不會將錯誤向下移動,但如果圖像的z-index高於包含錯誤的div的z-index,則圖像將永遠處於您修復的位置。

https://developer.mozilla.org/en/CSS/Understanding_z-index

1

最明顯的答案是確保沒有錯誤。 如果無法做到,下面一行添加到您的PHP腳本:

error_reporting ('E_NONE'); 
+1

您需要將錯誤記錄到文件。關閉錯誤日誌記錄是一種不好的做法。 – valentinas

4

不要緊,應該始終寫什麼您使用的平臺,但是從錯誤後端日誌文件,而不是在生產中輸出。這是你如何在PHP中做到這一點:

+0

這可能聽起來很愚蠢,但codeigniter中的php.ini文件在哪裏? –

+0

@DylanButh http://stackoverflow.com/questions/8684609/wheres-my-php-ini – valentinas

+0

顯然,我不允許更改ini文件,而不與我的「老闆」交談。還有什麼我可以做的? –

2

答案是,你永遠不顯示PHP在生產服務器上的錯誤。您應該只在您的實時服務器上顯示它們。

因此,當您正在測試和構建應用程序時,錯誤出現的位置並不重要。

但是在你的服務器上,你需要隱藏php錯誤,同時還要記錄。 Codeignitier提供這種能力。

首先,在您的index.php變化

define('ENVIRONMENT', 'development'); 

if ($_SERVER['SERVER_NAME'] == 'localhost') 
{ 
define('ENVIRONMENT', 'development'); 
} 
else 
{ 
define('ENVIRONMENT', 'production'); 
} 

,這將自動設置開發模式,當你在你的本地主機的,以及生產模式應用時(即沒有代碼改變)。

現在你配置一些東西,需要:

inside Index.php also change the error reporting to: 
if (defined('ENVIRONMENT')) 
{ 
    switch (ENVIRONMENT) 
    { 
     case 'development': 
      error_reporting(-1); 
     break; 

     case 'testing': 
     case 'production': 
      error_reporting(0); 
     break; 

     default: 
      exit('The application environment is not set correctly.'); 
    } 
} 


Config.php 
// Set logs to show Debug + Error messages on your development 
// But only error messages on your production server 
$config['log_threshold'] = (ENVIRONMENT == 'development' ? '2' : '1'); 


Database.php (config) 
$active_record = TRUE; 
$active_group = (ENVIRONMENT == 'development' ? 'localdev' : 'production'); 
// Now define the two different groups here, making sure production has: 
$db['production']['db_debug'] = FALSE;