2011-08-25 56 views
3

可能重複:
Reference - What does this error mean in PHP?的白色網頁上提交

我有下面的代碼段的一個問題:

我能得到的錯誤通知中驗證,但下一步=有效的代碼我只是得到一個白頁,任何想法?

我檢查了錯誤的設置和我在的public_html php.ini文件中設置它,我仍然沒有得到錯誤

function create_sale() 
{  
$this->template->append_metadata(js('debounce.js', 'sales'));   
$this->template->append_metadata(js('new_sale.js', 'sales'));   

    // ------------------------------------- 
    // Validation & Setup 
    // ------------------------------------- 

    $this->load->library('form_validation'); 

    $this->sale_rules[1]['rules'] .= '|callback__check_slug[insert]'; 

    $this->form_validation->set_rules($this->sale_rules); 

    foreach($this->sale_rules as $key => $rule) 
    { 
     $sale->{$rule['field']} = $this->input->post($rule['field'], TRUE); 
    } 

    // ------------------------------------- 
    // Process Data 
    // ------------------------------------- 

    if ($this->form_validation->run()) 
    { 
     if(! $this->sales_m->insert_new_sale($sale, $this->user->id)): 
     { 
      $this->session->set_flashdata('notice', lang('sales.new_sale_error')); 
     } 
     else: 
     { 

      $this->session->set_flashdata('success', lang('sales.new_sale_success')); 
     } 
     endif; 

     redirect('admin/sales'); 
    } 

    $this->template->set('sale', $sale) 
        ->build('admin/new'); 

} 
+0

你在用什麼框架?另外,寫一個有意義的標題。 – HyderA

+0

@gAMBOOKa,我猜CI – ifaour

+0

@gAMBOOKa他似乎在使用CodeIgniter。 –

回答

4

你說你的代碼是有效的,但你得到一個白頁。

大多數情況下,當您獲得白頁時,您的代碼中只會出現錯誤。

正如這裏的情況:

你突然在你的代碼,你不希望有一個endif;

啓用錯誤報告,請:

在引導文件包含此代碼:

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

記得在生產中禁用此!

要移除錯誤變化:

if ($this->form_validation->run()) 
{ 
    if(! $this->sales_m->insert_new_sale($sale, $this->user->id)): 
    { 
     $this->session->set_flashdata('notice', lang('sales.new_sale_error')); 
    } 
    else: 
    { 

     $this->session->set_flashdata('success', lang('sales.new_sale_success')); 
    } 
    endif; 

    redirect('admin/sales'); 
} 

到:

if ($this->form_validation->run()) 
{ 
    if(! $this->sales_m->insert_new_sale($sale, $this->user->id)) 
    { 
     $this->session->set_flashdata('notice', lang('sales.new_sale_error')); 
    } else { 
     $this->session->set_flashdata('success', lang('sales.new_sale_success')); 
    } 

    redirect('admin/sales'); 
} 
+0

@PeeHaha,我做你的代碼,仍然一whitepage 。在我的配置中,我有$ config ['sess_cookie_name'] \t \t ='pyrocms'。 (ENVIRONMENT!=='dev'?'_'。ENVIRONMENT:'');在我的index.php dev = \t error_reporting(E_ALL); \t \t \t函數ini_set( '的display_errors',1); –

+0

@Jess McKenzihi:如果你仍然有白頁,你應該確認'admin/sales'頁是否輸出任何內容。當您手動轉到該網址時,您會得到什麼? – PeeHaa

+0

我得到銷售管理頁面加載正常。 –

2

你有太多的關閉大括號,刪除「ENDIF」在你的腳本中,它應該工作。

+0

你可能要改變在php.ini中的error_reporting和相關選項等等你可以看到這更容易 – ghostJago

+0

良好的漁獲物,要麼使用大括號,或者:其他:ENDIF; ...最好花括號 – HyderA

+0

@Ashley是剛殺的頁面之前提交 –

1

笨是臭名昭著的 「死亡白屏」。

通常當我遇到它時,一直是因爲他們設置數據庫錯誤處理的方式(這不好)。當$db['default']['db_debug']設置爲FALSE時,不處理數據庫錯誤。任何失敗的查詢或連接嘗試都會返回false。在一個錯誤的查詢後繼續執行,這可能會導致死亡的白屏。如果幸運的話,在某些情況下會在日誌中收到錯誤消息,但在大多數情況下您不會,因爲query()函數只是在不記錄任何內容的情況下靜默地返回false。

如果將它設置爲TRUE,那麼您可能處於更糟的位置,因爲任何數據庫錯誤都會自動導致CodeIgniter調用它自己的show_error()函數並生成500個HTTP響應,並且您無法處理它在你自己的。

這是獲得WSOD的最常見方法,我知道。我沒有使用CI的2.0版本,但在1.7版本中就是這種情況。你可能想在你的database.php配置文件中設置db_debug爲true,直到你找出發生了什麼。

+0

謝謝@zombat,但它設置爲true –

0

我懷疑你redirect()失敗重定向(而不是隻留下一個空白頁面重定向SANS)出於某種原因或其他。在它檢查之前拋出調試消息。

+0

@tek我已經完成了這個(仍然是白色),它也使用了相同的錯誤重定向,所以它必須工作 –