ConohaVPSで、同一設定のVPSサーバーを2つ用意しています。(同スペックのもの)
サーバーAは本番環境で、サーバーBはAの保存イメージからセットアップした試験環境のものです。
両者の違いは異なるサブドメインを設定してあるだけ(のはず)です。
PHP
1//monthly_excel.php の一部抜粋 2 3$now = new DateTime(); 4$ts = $now->format('Y-m-d_H_i_s'); 5$target_y = $target_y;//2019 6$target_m = $target_m;//9 7$target_ym = $target_y."年".$target_m."月度"; 8 $fileName = $target_ym."_勤務管理表_".$ts.".xlsx"; 9else: 10 $fileName = "[未確定]".$target_ym."_勤務管理表_".$ts.".xlsx"; 11endif;
PHPSpreadsheetを用いてExcelファイルへのデータの書き出しをしているのですが、
上がサーバーA、下がサーバーBから出力したものです。
文字コードの問題だろうなとは思うのですが、monthly_excel.phpのファイル自体は全く同じものですし。。
(サーバーBにて正常動作を確認後、ローカルにダウンロード→そのままサーバーAへアップロードしたものです)
確認すべき点などありましたら教えてください。
###2019-10-21 17:10追記
出力部分は下記のようになっています。
PHP
1header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 2header('Content-Disposition: attachment;filename="'.$fileName.'"'); 3header('Cache-Control: max-age=0'); 4header('Cache-Control: max-age=1'); 5header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 6header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 7header('Cache-Control: cache, must-revalidate'); 8header('Pragma: public'); 9 10$writer = new Xlsx($spreadsheet); 11$writer->save('php://output');
文字化けしないサーバーB、文字化けするサーバーA共に、Windows10+GoogleChrome(77.0.3865.120(Official Build)(64 ビット)) でアクセスしています。同一PCです。
なのでそもそもurlencodeとか関係ない気がしますが、urlencodeしたら化け方は変わりましたが化けたままです。。
生成されたExcelファイルそのものは何の問題もなく(中身の文字化けもない)、ファイル名のみの問題なので半角英数のみのファイル名にすれば問題は回避できるのですが。。
回答2件
あなたの回答
tips
プレビュー