7

我的网络服务器表现得很奇怪。似乎它在发送到 apache 之前执行了两次脚本(PHP)。

我已经运行了这个文件:

<?php
echo '<pre>';
session_start();
$_SESSION['index']++;
echo '<br>';
print_r($_SESSION);
?>

而且我知道++一开始会发出通知,但这只是为了调查它是否运行两次。无论如何,打印的会话显示每次加载页面时 index-index 都会增加 2。

网络服务器是 apache2,php5 安装在一个 debian 单元上。

有人有什么想法吗?

4

4 回答 4

6
echo '<pre>'; //Headers and cookies already sent.
session_start(); //Cannot set cookie anymore, system tries again, I guess

首先开始会话,然后输出任何内容。试着放在session_start();上面

于 2013-02-19T20:44:32.043 回答
2

我不能感谢这个问题的海报。他的会话测试让我意识到我遇到了多次运行 php 脚本的相同问题。

在我的脚本中,我有两个由 if-else-construct 相互分隔的 PDO 函数。一种是简单的选择,一种是简单的插入功能。但是每次我运行脚本时,两个 pdo 命令都会被执行。PDO 最终在我的表中写入了条目“public”的行。

所以发生了什么事?由于无法找到 HTML 代码中的元素,我的页面被多次发送。在我的情况下,这是一个命名错误的 css 文件。当我解决了这个问题(查看代码 4 小时后),问题就消失了。例如,损坏的图像也会触发相同的事件。

于 2013-07-11T07:53:06.200 回答
2

好吧,伙计们,找到了一个完全疯狂的解决这个问题的方法。只是张贴以供将来参考。我最近在 Chrome 中安装了一个 HTML 验证器(一个扩展)。这似乎是罪魁祸首。加载完所有内容后,验证器似乎正在重新请求页面,因此它被执行了两次。不错的插件。不是!我花了大约半天时间才弄清楚这一点。

于 2016-12-04T00:06:44.110 回答
0

我看到了同样的行为......页面第一次运行时会出现 $_POST,然后第二次不会出现......搜索代码以找出页面可能再次发回自身的原因。徒劳无功。

在看到上面user1601869的回答后,我开始检查。我有一些我还没有写的样式表的链接,所以把它们的骨架放进去。

事实证明,对我来说,罪魁祸首是:

<link rel="shortcut icon" href="">

这只是导致我的页面中断的图标的占位符。我建议如果您有同样的问题,请查找<HEAD></HEAD>已损坏的链接!

于 2016-06-29T04:17:20.347 回答