2016-05-18 4 views
1

は、私は次のコード行を持っている:このコードは、Excelファイルが作成され、ブラウザのダウンロードディレクトリに保存されます(クラスの外で)PHPファイルから実行されるF3クラスに移動すると、php://出力への書き込みが失敗しますか?

$objPHPExcel = new PHPExcel(); 

..ADDITIONAL CODE.. 

// Redirect output to a client.s web browser (Excel5) 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="powers-id_report.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

私は、それ自身のクラスへのコードのすべての移動:

class ReportController extends BaseController { 
    function generate() { 
     $objPHPExcel = new PHPExcel(); 

     ..ADDITIONAL CODE.. 

     // Redirect output to a client.s web browser (Excel5) 
     header('Content-Type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment;filename="powers-id_report.xls"'); 
     header('Cache-Control: max-age=0'); 
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
     $objWriter->save('php://output'); 

     $this->fw->reroute('/'); 
    } 
} 

をそして、それは失敗します。私は、このクラスにリクエストをリダイレクトするためにFat Free PHPを使用しています。私はブレークポイントを使用して、これまでと同じコードをすべて実行していますが、ファイルが出力されていないことを確認しました。 $objWriter->save('php://output');trueを返しています。これはファイルを正常に保存したことを意味します。私はまた、リルートを削除しようとしました。私のエラーログもすべて空です。

+0

エラーログが空の場合、エラーを報告しないようにPHPを設定している可能性があります。 – RiggsFolly

+0

[エラー報告](http://stackoverflow.com/questions/845021/how-to-get-useful-あなたのファイルの先頭にある の_while testing_に、あなたの開かれているPHPタグの直後に例えば '<?php error_reporting(E_ALL);というエラーメッセージのPHP/845025#845025があります。 ini_set( 'display_errors'、1); '何かが得られるかどうかを調べる。 – RiggsFolly

+0

また '$ objWriter'がインスタンス化されています。スコープ内にあるので、コードをクラスメソッドに移動しますか? – RiggsFolly

答えて

1

溶液これは、そのようなヘッダを変更してもよいafterrouteとして$f3のコントローラ機能の実行を防止

$objWriter->save('php://output'); 
die(); 

あります。

関連する問題