Php CSV下载不适用于live,但适用于localhost

Php CSV下载不适用于live,但适用于localhost,php,apache,drupal,csv,Php,Apache,Drupal,Csv,尽管CSV在本地主机上运行,但我在live上下载CSV时遇到了一个问题 我已经通过了考试 ,但这种方法对我也不起作用。我试过了 这是我的密码,请看一下- //Final function, called from module file. function event_signup_download_detail($nid) { module_load_include('inc', 'signup_event', 'event_signup_view'); $csv_

尽管CSV在本地主机上运行,但我在live上下载CSV时遇到了一个问题

我已经通过了考试

,但这种方法对我也不起作用。我试过了

这是我的密码,请看一下-

    //Final function, called from module file.
function event_signup_download_detail($nid)
{  
    module_load_include('inc', 'signup_event', 'event_signup_view');
    $csv_output = '';
    $csv_output .= "Role,Last name,First Name,Patrol,Position,Home phone,Cell Phone,Email,Payment Date,Unit Join Date,Payment Status\n";           
    $nid = 2001;

    // add the paid users to the csv 
    $csv_output .= getPaidScoutUsers($nid);

    // get unpaid users, add them to the csv
    $csv_output .= getUnpaidUsers($nid);

    header('Content-type: "application/vnd.ms-excel"');
    header('Content-Disposition: attachment;filename=\"Registration_information.csv\"');
    echo $csv_output;
    exit; 

}
它只是在页面上输出结果。我需要CSV文件中的文件,应该下载

根据评论,我想在我的.htaccess中进行更改,但问题是,下载csv已经在使用同一行代码的其他页面上工作,因此它在这里也必须工作


我不明白,这张打印文件是如何终止要开始的下载的…

您需要使用服务器配置强制下载。在Apache上,可以在.htaccess文件中使用

 AddType application/octet-stream .csv
加上这个 标题('Content-type:'application/vnd.ms excel;charset=utf-8');
而不是标题('Content-type:'application/vnd.ms excel')

我打开了我的.htaccess,它位于服务器上的公共html文件夹中,并添加了这一行。但它仍然在做同样的事情。。我只需要在末尾添加这一行,或者需要关心其他事情?您需要确保服务器配置为允许htaccess文件,以便apache需要重新启动或执行任何其他操作。htaccess也可以工作,但保留在基本文件夹中的默认文件除外?您不需要重新启动。还要检查你的标题设置是否正确:检查文档:它不是那样工作的。如果我使用@readfile($csv_输出),我将被转发到白色屏幕;如果减少
附件之间的空格数,会发生什么
文件名
?应该只有一个。如果删除文件名周围的引号会发生什么?你用什么浏览器测试过这个?另外,请注意,某些版本的Excel在需要实际的XLS文件时不喜欢获取CSV内容,如果用户直接打开而不是先将文件保存到磁盘,则可能会出现异常行为。在对同一问题的评论中看到这一点后,我缩小了它们之间的空间,但没有起作用。。我也检查了删除的报价,同样的结果。。在firefox和chrome上测试..我理解excel中csv的问题,但在这种情况下,如果我单击相同的链接,它应该询问用户是否要打开它或保存到本地主机上的类似磁盘的设置..这是通过聊天室的帮助完成的。。。