这个网站可以’;在PHP中设置标题后无法访问/404状态代码

这个网站可以’;在PHP中设置标题后无法访问/404状态代码,php,wordpress,http-headers,Php,Wordpress,Http Headers,我想强制下载在payments-exports.php文件中动态生成的xlsx文件 问题是,如果我设置了标题,使用header()函数,我得到这个站点无法访问错误,404状态在开发者工具中可见 这是启动文件下载的锚元素,位于admin-dash.php中: <a href="<?php echo esc_url( project_name_get_permalink( 'admin- dash/payments-export/' ) . $endpoint_part ); ?>

我想强制下载在payments-exports.php文件中动态生成的xlsx文件

问题是,如果我设置了标题,使用header()函数,我得到这个站点无法访问错误,404状态在开发者工具中可见

这是启动文件下载的锚元素,位于admin-dash.php中:

<a href="<?php echo esc_url( project_name_get_permalink( 'admin- 
dash/payments-export/' ) . $endpoint_part ); ?>" class=""><?php 
esc_html_e( 'Export to .xls', 'project_name' ); ?></a>
我可以正常地看到测试显示在我的屏幕上,但当我移除它时,我会

无法访问此网站

如果完全删除die()和header()函数,则生成的输出将显示在屏幕上,不会出现任何错误


基本上,打开了正确的文件,生成了正确的文件内容,但设置标题会停止脚本的执行并引发错误。

设置标题后需要回显或打印数据,然后退出()我已经在这样做了,问题是设置第一个标题后脚本停止执行,永远不要谈到那一部分,我会把那一部分添加到问题中,让它更清楚。header()可能很挑剔,你能试着删除in header调用外端的所有额外空格吗,基本上是修剪()谢谢你的提示,我删除了所有空格,但不幸的是,我仍然得到相同的错误必须在发送任何实际输出之前调用,可以通过普通HTML标记、文件中的空行,也可以从PHP调用。使用include或require函数或其他文件访问函数读取代码,并且在header()之前输出空格或空行,这是非常常见的错误使用单个PHP/HTML文件时也存在相同的问题。“。在“>标记,…”之后,是否检查每个文件是否有多余的空行?您需要在设置标题后回显或打印数据,然后退出(),我已经在这样做了,问题是脚本在设置第一个标题后停止执行,并且永远无法到达该部分,我将把该部分添加到问题中以使其更清楚。header()你能试着删除in header调用外端的所有额外空格吗?基本上是trim()。谢谢你的提示,我删除了所有空格,但不幸的是,我仍然收到相同的错误。从PHP文档中可以看到:“记住header()必须在发送任何实际输出之前调用,可以通过普通HTML标记、文件中的空行,也可以从PHP调用。使用include或require函数或其他文件访问函数读取代码,并且在header()之前输出空格或空行,这是非常常见的错误使用单个PHP/HTML文件时也存在相同的问题。“。在“>标记,…”之后,是否检查每个文件是否有多余的空行?
// this is at the top of the file
die('test');
header('Content-Type: application/vnd.openxmlformats- 
officedocument.spreadsheetml.sheet');
header( 'Content-Description: File Transfer' );
header( 'Content-Disposition: attachment; filename="test.xlsx"' );

//die('test2');
// I cant see "test2" if I uncomment it and remove the first die function

// generate the file
....
$writer->writeToStdOut();

exit();