PHP警告:session_start():标头已发送时无法启动会话

时间:2018-02-28 07:21:38

标签: php wordpress

我的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经验)

7 个答案:

答案 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 已经发送到浏览器的错误。