PHPExcel + Kohana:500内部服务器错误

时间:2013-06-26 20:02:54

标签: kohana phpexcel mod-fcgid

我有一个在Kohana建立的网站,我正在尝试允许上传Excel文件。我正在使用PHPExcel来读取数据。它在我的本地服务器上工作正常但它在远程服务器上失败了。 (远程服务器托管在xmission.com上)

所以控制器中的代码如下:

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 个答案:

答案 0 :(得分:2)

默认情况下,FastCGI进程在500个请求后退出。您可以将PHP_FCGI_MAX_REQUESTS(在包装中)提升或将FcgidMaxRequestsPerProcess限制为500。

我不认为你可以在不修改FastCGI配置的情况下解决这个问题,但我可能错了。

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

答案 1 :(得分:1)

我要说你的文件太大或你的脚本超过最大值。执行时间处理时间。在调用函数之前尝试使用此代码:

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