2013-06-26 320 views
1

我有一個在Kohana內置的網站,我試圖允許Excel文件上傳。我使用PHPExcel來讀取數據。它在我的本地服務器上正常工作,但在遠程服務器上失敗。 (遠程服務器在xmission.com託管)PHPExcel + Kohana:500內部服務器錯誤

所以在控制器中的代碼如下:

public function action_bulk_upload() 
{ 
    if ($path = Kohana::find_file('vendor', 'PHPExcel')) { 
     require_once $path; 
    } 

    $objPHPExcel = PHPExcel_IOFactory::load($_FILES['upload']['tmp_name']);    
    $worksheet = $objPHPExcel->getActiveSheet(); 

    $range = range('A', 'Z'); 
    $data = array(); 
    $i  = 1; 

    while ($worksheet->cellExists('A' . $i)) { 
     $row = array(); 

     foreach ($range as $letter) { 
      if (!$worksheet->cellExists($letter . $i)) { 
       break; 
      } 

      $cell = $worksheet->getCell($letter . $i);  
      $row[] = $cell->getValue(); 
     } 

     $data[] = $row; 
     $i++; 
    } 

    $worksheet = null; 
    $objPHPExcel->disconnectWorksheets(); 
    $objPHPExcel = null; 

    $view = View::factory('content/admin/events/bulk_form') 
     ->bind('data', $data); 
    $this->add_content($view); 

    // The code gets here 
} 

該代碼使得它所有的方式通過控制器但不幸的是我得到了500內部服務器錯誤。錯誤日誌說:

[Wed Jun 26 12:45:08 2013] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error. 
[Wed Jun 26 12:45:08 2013] [warn] (104)Connection reset by peer: mod_fcgid: ap_pass_brigade failed in handle_request function 

這聽起來我想我需要改變FastCGI設置,但它是一個共享的託管帳戶,所以我沒有可能能。謝謝您的幫助!

回答

2

默認情況下,FastCGI在500次請求後處理退出。您可以提高PHP_FCGI_MAX_REQUESTS(在包裝中)或將FcgidMaxRequestsPerProcess限制爲500。

我不認爲你可以在不修改FastCGI配置的情況下解決這個問題,但我可能錯了。

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples

+0

那麼什麼構成一個請求?它是一個用戶訪問一個頁面= 1的請求嗎?或者1 php腳本可以使用多個請求? – chrislondon

+0

@chrislondon:查看http://stackoverflow.com/questions/708670/ –

1

我說要麼你的文件過大或腳本超過最高。執行時間處理時間。在調用你的函數之前試試這個代碼:

ini_set('max_execution_time', 0); // No time limit 
ini_set('post_max_size', 20M); 
ini_set('upload_max_filesize', 20M);