首页 > 解决方案 > 为什么以下代码无法在实际服务器上运行,但在 localhost 上运行良好?

问题描述

我正在使用 Maatwebsite/Excel 包导出 .csv 文件。我的代码在 localhost 上运行良好,但是当我尝试在实际服务器上运行它时,它无法正常工作并显示

local.INFO:preg_match() 期望参数 2 是字符串,第 1 行给出的数组。62

在本地主机上,当我导出生成的报告时,它会存储在 public/reports 中,并且电子邮件也会发送给用户。但是当我在服务器上运行代码时,它给出了错误

它的控制器功能:

try {
            $report = 'Appointment_' . Carbon::now()->toDateTimeString() . '_Report.csv';
            $report_path = 'reports/Appointment_' . Carbon::now()->toDateTimeString() . '_Report.csv';
//            Log::info(var_dump($data));
            $created = Excel::store($data, $report, 'reports');
            $user_id = $request->session()->get('user_id');
            app('App\Http\Controllers\API\AppointmentController')->sendDocument($report_path, config('constants.DOCUMENT_TYPE.REP'), $user_id);

            if($created) {
                echo json_encode(array('type' => 'success', 'message' => 'Report Exported successfully'));
            }

它是 Exports 中的集合代码:

public function collection()
    {
        $data = Session::get('report_query');
//        Log::info($data);
        $d = DB::select($data);
        return collect($d);
    }

    public function headings(): array
    {
        $field = Session::get('fields');
        foreach ($field as $f) {
            $arr[] = config("constants.REPORTS_FIELDS." . str_replace('.', '_', $f));
        }
            return $arr;
//        return array_keys($this->collection()->toArray()[0]);
        }    

标签: phplaravelmaatwebsite-excel

解决方案


推荐阅读