编程语言
首页 > 编程语言> > php – Content-Length标头始终为零

php – Content-Length标头始终为零

作者:互联网

我按以下方式设置标题:

header('Content-Length: ' . filesize($strPath));

在我的电脑上使用ZendServer它工作正常,我可以下载一个文件大小正确的文件.在生产服务器上,使用Apache和编译PHP的Solaris,我得到一个文件大小等于零的文件,因此是一个空文件.

有配置参数吗?可以阻止设置’Content-Length:1222’的东西?

谢谢.

编码:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

require 'includes/prepend.inc.php';
require __ADMIN_DIR__.'/AdminInfo.php';
$intFile = QApplication::QueryString('fileID');
if($intFile == '') die('Error: missing ID');
$objFile = File::Load($intFile);
$blnRight = false;
$objAdminInfo = new AdminInfo();
if($objAdminInfo->isAdmin()) {
    $blnRight = true;
}
else {
    $objSecMan = new SecurityManager(
        'file:'.$objFile->FileID, 
        $objAdminInfo->getUserID()
    );
    $blnRight = $objSecMan->processResource('view');
}

// if the user can modify and or publish, can even view the file
if(!$blnRight) {
    $blnRight = $objSecMan->processResource('modify');

    if(!$blnRight) {
        $blnRight = $objSecMan->processResource('publish');
    }       
}

//$strPath = __UPLOADS__.DIRECTORY_SEPARATOR.$objFile->FileID;
$strPath = 'subdept.csv';

if (file_exists($strPath) && $blnRight) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.$strPath);//$objFile->Filename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($strPath));
    ob_clean();
    flush();
    readfile($strPath);
    exit;
}
else {
    die('Restricted access');
}   
?>

当我在$strPath之前评论代码时它起作用,所以它必须是血腥框架中的东西.我想抛弃整个CMS.

解决方法:

检查传输编码标头.如果传输编码被分块,则不会设置Content-Length字段

可能的原因是ZendServer没有进行分块编码,而Apache则没有

有关详细信息,请参阅以下链接

http://en.wikipedia.org/wiki/Chunked_transfer_encoding

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html

标签:content-length,php,apache,header
来源: https://codeday.me/bug/20191002/1841207.html