在大型 PHP 文件上使用 $_SESSION 变量的 Apache 奇怪行为

Apache strange behavior with $_SESSION variables on large PHP files


我有一个很大的 PHP 文件,里面有很多 HTML 和 CSS,后面跟着一段 PHP 代码。
但是,如果我在 PHP 代码开始之前添加超过 4199 个字符,则 PHP 代码 never 不正确已执行(服务器仍然在 PHP 部分之后发送 HTML)。
但是如果我从命令行 运行 PHP 文件它工作正常。

所以我猜问题是 Apache 服务器配置以某种方式限制了执行的 PHP 文件的大小。


系统:

<?php code that works just fine ?>
<!DOCTYPE html>
<html>
    
<div> lots of HTML (4200+ characters) </div>
    
<?php code that is not properly executed ?>
    
<div> more HTML that gets transmitted by the server </div>
    
</html>

有人知道我可以在哪里更改此限制吗?

也许 php 文件出于性能原因只在开始时被检查。如果没有 php 语句,它将被视为常规 text/html 文件。

因此,如果您只需要解决问题的方法,请在开头添加类似

的内容

<?php echo; ?>

然后该文件应该被识别为 php 文件,您可以在实际 php 代码开始之前添加任意数量的 html 标签。

我在 /etc/php/7.4/apache2/php.ini 中找到了 output_buffering = 4096 选项,我现在增加了选项,因此我的整个 PHP 文件都在该限制内。


显然,问题与 PHP session 有关,该 第一个 之后声明发送的位置为 4096 个字节。 (我认为由于数据传输的“拆分”,浏览器没有正确设置会话)

但我不确定这是否真的是问题所在。
我也在文件的开头尝试了 session_start(); 但这并没有解决问题。

@Hannes 谢谢你的帮助。