Laravel导出不能在服务器上运行,但在localhost上工作正常

时间:2017-05-13 05:58:34

标签: php laravel

以下是我用于导出功能的代码

public function export(){
        $users = DB::table('users')->where('user_type','Farmer')->orWhere('user_type','Dealer')->select('id','name','middlename','surname','mobile','state','district','taluka','user_type')->get()->map(function ($item, $key){
            return (array) $item;
        })
        ->all();

        $usersArray = []; 
        foreach ($users as $user) {
             $usersArray[] =$user;
        }


        Excel::create('users',function($excel)use($usersArray) {
            $excel->setTitle('users');
            $excel->setCreator('Laravel');
            $excel->setDescription('users file');
            $excel->sheet('sheet1',function($sheet)use($usersArray) {
            $sheet->fromArray($usersArray,null,'A1',true,true);
            });

        })->download('xlsx');
    }

此代码在localhost上工作正常,localhost没有问题,但在服务器上显示错误“无法访问此站点”,我无法弄清楚服务器上的问题是什么。 我甚至在stackoverflow上尝试了一些其他解决方案但无法工作。

3 个答案:

答案 0 :(得分:1)

     $users = DB::table('users')
               ->where('user_type','Farmer')
               ->orWhere('user_type','Dealer')
               ->select('id', 'name', 'middlename', 'surname', 'mobile', 'state', 'district', 'taluka','user_type')
               ->get()->map(function ($item, $key){
                    return (array) $item;
               })->all()->toArray();

使用->toArray()后,变量$users变量将是一个数组

现在谈到你的观点,

错误的可能性

1)创建临时文件的文件夹权限

2)超出允许的内存大小,您可以通过设置php.ini

ini_set('memory_limit','-1');文件或代码中将内存大小更改为无限制

3)授予服务器中laravel setup存储目录的写权限。

4)检查apache / nginx日志中是否有其他错误可能,因为它是一个500错误响应,应该记录到apache / nginx的日志文件中。

我的建议是使用league/csv个包或box/spout个包与laravel Excel相关的作品。

答案 1 :(得分:0)

只是提示,您不必自己制作$usersArray,只需在toArray()之后使用all()方法。

你的nginx / apache日志中有没有消息?

答案 2 :(得分:0)

经过很多麻烦后,

PHPExcel ZipArchive not found最终这个解决方案对我有用。我只是追加PHPExcel_Settings :: setZipClass(PHPExcel_Settings :: PCLZIP); $ zipClass = PHPExcel_Settings :: getZipClass()之前的这一行;在文件PHPExcel / Reader / Excel2007.php中,现在我的导出功能也在服务器上运行。