在大型 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 文件的大小。
系统:
- Ubuntu-服务器 20.10
- Apache/2.4.46 (Ubuntu)
- PHP 7.4.9 (cli)
<?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 谢谢你的帮助。
我有一个很大的 PHP 文件,里面有很多 HTML 和 CSS,后面跟着一段 PHP 代码。
但是,如果我在 PHP 代码开始之前添加超过 4199 个字符,则 PHP 代码 never 不正确已执行(服务器仍然在 PHP 部分之后发送 HTML)。
但是如果我从命令行 运行 PHP 文件它工作正常。
所以我猜问题是 Apache 服务器配置以某种方式限制了执行的 PHP 文件的大小。
系统:
- Ubuntu-服务器 20.10
- Apache/2.4.46 (Ubuntu)
- PHP 7.4.9 (cli)
<?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 谢谢你的帮助。