我的wp-debug日志中出现错误说" PHP警告:session_start():当标题已经在第28行和第34行的... hooks.php中发送时,无法启动会话。以下是文件
中的代码段function _action_fw_flash_message_backend_prepare() {
if ( ! session_id() ) {
session_start();
}
}
在session_start();我已经读过session_start应该是要在文件中执行的第一行代码。这不会影响代码的功能吗? (我没有PHP经验)
答案 0 :(得分:4)
将session_start()
移至页面顶部。和ob_flush();
在脚本或脚本的末尾。
<?php
@ob_start();
session_start();
?>
答案 1 :(得分:2)
好的,
这是在000webhost上对我有用的答案
如果对您有用,请不要忘记留下评论并点击 upvote
转到 public_html->。htacess
打开文件
粘贴此
php_flag output_buffering on;
BOOM正常工作。
答案 2 :(得分:0)
我一直在为我的所有项目使用WP Session Manager。完成创建会话的所有麻烦,您可以在代码中的任何位置使用$_SESSION
调用。与其他评论所述,为了启动会话,您需要在设置标头之前运行session_start()
函数,因此请使用挂钩plugins_loaded
来运行您的函数。
function _action_fw_flash_message_backend_prepare() {
if ( ! session_id() ) {
session_start();
}
}
add_action( 'plugins_loaded', '_action_fw_flash_message_backend_prepare' );
答案 3 :(得分:0)
拆开。像这样打开和关闭您的php标头脚本:
<?php
session_start();
if($_SESSION['Active'] == false){ /* Redirects user to login.php if not logged in */
header("location:../index.html");
exit;
}
?>
答案 4 :(得分:0)
升级到 PHP 7.4 后,我开始收到相同的错误消息,即使我的所有标签和脚本都在正确的位置,对我来说问题在于文档编码,它是 UTF-8< /strong>,所以我将其更改为 UTF-8 without BOM 并做到了。现在一切都很好。
答案 5 :(得分:0)
遇到了同样的问题,我找到了适合我的解决方案,而且很简单:
php 文件应该以 <?php
开头,在此之前没有其他内容。
就我而言,我在 <?php
之前有一个空格;删除它后,错误消失了。
答案 6 :(得分:0)
对我来说,实际问题是 PHP 文件开头的一个空格,用于 PHP 标记。以下代码应该是 PHP 文件的第一行。
<?php session_start(); ?>
当您在上面的代码之前编写一些 Html 代码甚至一个空格时,就会出现问题,PHP 将您的 HTML 代码发送到浏览器,这就是为什么它会给出 Header 已经发送到浏览器的错误。