日期:2014-05-17  浏览次数:20453 次

PHP输出文件头错误
本地 nginx 1.09 测试一切正常,上传到服务器 nginx 1.12, 在选择文本输出时就报错
完整代码:
PHP code

<?php
    @$id=$_GET['id']?$_GET['id']:'a';
    @$txt=$_GET['txt']?$_GET['txt']:'';

    $trees=array();
    $trees["a"]="苹果";
    $trees["b"]="香蕉";
    $trees[3]="樱桃";

if($txt){
    header('Content-Disposition: attachment; filename="'.$trees[$id].'.txt"');
    header('Content-type: text/'.($txt?'plain':'html').'; charset=utf-8');
    echo '您选择种了:'.$trees[$id].'树';
    die();
}else{
    echo '<h3>您选择种了:'.$trees[$id].'树</h3>';
?>
<form action="" method="get">
选择您想种的树:
<select name="id">
<?php foreach($trees as $key=>$tree){ echo '<option value="'.$key.'">'.$tree.'</option>'; } ?>
</select>树<br>
输出格式:<select name="txt">
<option value="">默认</option>
<option value="1">文本</option>
</select>
<input type="submit" value="提交">
</form>
<?php
}
?>


演示地址: http://guilyn.host.org/cn/demo/full.php

------解决方案--------------------
应该是BOM头的原因。 可以修改下php.ini output_buffering=On,或者去掉它
------解决方案--------------------
保存为utf8的时候就需要注意这个头的事情 ...
------解决方案--------------------
int_set('output_buffering=On');不知道写错了没?