我有一个在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设置,但它是一个共享主机帐户,所以我可能无法做到。谢谢你的帮助!
答案 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);