xxhiroxx_chanと申します。
新しくWEBサーバを購入し、旧WEBサーバの環境を移行したところ、
PHPによるWORD出力の動きがおかしくなり、お知恵を頂きたく投稿しました。
旧サーバでPHPWORDは以下のものを使用しており、
新サーバでも同様のものを組み込みました。
http://phpword.codeplex.com/
なお、サーバの環境は以下です。
【旧サーバ】
Windows Server 2003
Apache/2.2.26 (Win32)
PHP/5.3.5
【新サーバ】
Windows Server 2012 R2
Apache/2.4.12 (Win64)
PHP/5.6.7
旧サーバで運用しているときには、
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('php://output');
でWORDファイルがすんなり出力されていたのですが、新サーバでは
「ファイル・・・は内容に問題があるため、開けませんでした。」
のメッセージが出て、詳細を確認すると「ファイルは破損しており、開けません」と出ます。
このままOKしファイルの修復を行うと、通常にファイルが開きます。
http://forum.kohanaframework.org/discussion/7780/problem-with-phpexcel/p1
を参考にして、MIME Typeを変更したが、それでもだめでした。
また、phpofficeでも試してみましたが、同じでした。
http://phpoffice.github.io/
なお、以下は、PHPWORDのサンプルファイルですが、これでも
・旧サーバ→OK
・新サーバ→エラー出力
となるので、コードの中身の問題ではなく、環境の問題かな?と考えています。
何か解決案を教授頂ければ幸いです。
よろしくお願いいたします。
<?PHP
require_once '../PHPWORD/PHPWord.php';
// Create a new PHPWord Object
$PHPWord = new PHPWord();
// Every element you want to append to the word document is placed in a section. So you need a section:
$section = $PHPWord->createSection();
// After creating a section, you can append elements:
$section->addText('Hello world!');
// You can directly style your text by giving the addText function an array:
$section->addText('Hello world! I am formatted.', array('name'=>'Tahoma', 'size'=>16, 'bold'=>true));
// If you often need the same style again you can create a user defined style to the word document
// and give the addText function the name of the style>:
$PHPWord->addFontStyle('myOwnStyle', array('name'=>'Verdana', 'size'=>14, 'color'=>'1B2232'));
$section->addText('Hello world! I am formatted by a user defined style', 'myOwnStyle');
// You can also putthe appended element to local object an call functions like this:
$myTextElement = $section->addText('Hello World!');
header('Content-Type: application/vnd.ms-word');
header('Content-Disposition: attachment;filename="test.docx"');
header('Cache-Control: max-age=0');
// At least write the document to webspace:
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('php://output');
exit();
?>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/03 04:22
退会済みユーザー
2015/09/03 07:00
2015/09/04 07:47
退会済みユーザー
2015/09/04 07:53
2016/10/24 02:18