我在我的 wp-debug 日志中收到一条错误消息:“PHP 警告:session_start():当标头已发送至第 228 行的...hooks.php 时无法启动会话”。这是文件中的代码片段
function _action_fw_flash_message_backend_prepare() {
if ( ! session_id() ) {
session_start();
}
}
session_start();在228上。我读到session_start应该是文件中要执行的第一行代码。这不会影响代码的功能吗? (我的 PHP 经验为零)
将
session_start()
移动到页面顶部。和ob_flush();
在脚本的页脚或末尾。
<?php
@ob_start();
session_start();
?>
对我来说,实际问题是 PHP 文件开头的 PHP 标记前的空格。以下代码应该是 PHP 文件的第一行。
<?php session_start(); ?>
当您在上面的代码之前编写一些 Html 代码甚至空格时会出现问题,PHP 将您的 HTML 代码发送到浏览器,这就是为什么它给出 Header already send to browser 的错误。
升级到 PHP 7.4 后,我开始收到相同的错误消息,即使我的所有标签和脚本都在正确的位置,对我来说,问题在于文档编码,它是 UTF-8,所以我改变了它转换为没有 BOM 的UTF-8 就可以了。现在一切都很好。
转到public_html->.htacess
打开文件
贴这个
php_flag output_buffering on;
我一直在为我的所有项目使用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' );
分开。像这样打开和关闭您的 php 标头脚本:
<?php
session_start();
if($_SESSION['Active'] == false){ /* Redirects user to login.php if not logged in */
header("location:../index.html");
exit;
}
?>
有同样的问题,我找到了适合我的解决方案,它很简单:
php 文件应以
<?php
开头,在此之前没有其他内容。
就我而言,我在<?php
之前有一个空格;删除它后错误消失了。
开始
我在我的 php 代码中间遇到了 session() 的问题,因为我只是先在那里开始会话。
在第一行,我只有一个“”作为注释。
这就是问题所在,“
解决:
将音符行移到底部后,“
我将 php 版本从 php 版本 8.1 更改为 php 版本 8.0 并且它有效。