2017-05-13 1 views
1

上で正常に動作していないと、このコードは、ローカルホスト上で正常に動作しているLaravelのエクスポートは、サーバー上で作業していて、以下のlocalhostの

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で無問題ですが、サーバー上のそれ「このサイトにアクセスできない」というエラーが表示されていますが、サーバー上の問題点を把握することができません。 私は他のいくつかのソリューションをstackoverflowで試しても動作できません。

答えて

0

PHPExcel ZipArchive not found最後にこの問題を解決するためには、このソリューションが役立ちます。 PHPExcel_Settings :: setZipClass(PHPExcel_Settings :: PCLZIP)を追加するだけです。この行の前に$ zipClass = PHPExcel_Settings :: getZipClass();ファイルPHPExcel/Reader/Excel2007.phpで、今ではエクスポート機能もサーバ上で動作しています。

0

$usersArrayを自分で作成する必要はありません。all()の後にtoArray()メソッドを使用してください。

あなたのnginx/apacheログにメッセージがありますか?

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変数は

今、あなたのポイントに来て、エラーの

Possibilites

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

私は直接box/spoutを使いましたが、localhostとサーバの両方でうまく動作しています。ありがとうございました。 – Nil

+0

昨日何が起こったのか間違って、私はlocalhostの両方でテストを行い、今はサーバー上で動作していると思っていて、その答えをアクティブにしています。 サーバー上のphp.iniファイルを作成しました.... 2 .setメモリ制限を-1に設定すると、つまり64Mから128Mに変更されます 3.ストレージフォルダにwite権限を設定します エクスポートはまだ動作していません... – Nil

+0

サーバのApacheを再起動しましたか? –

関連する問題