PHP似乎执行了两次脚本

时间:2013-02-19 20:41:51

标签: php apache web webserver debian

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

我已经运行了这个文件:

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

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

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

任何人都有任何想法?

4 个答案:

答案 0 :(得分:5)

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

首先启动会话,然后输出任何内容。 尝试将session_start();置于顶部

答案 1 :(得分:2)

我不能完全感谢这个问题的海报。他的会话测试让我意识到我有几次运行php脚本的问题。

在我的脚本中,我有两个PDO函数,它们通过if-else-construct分开。一个是简单的选择,一个是简单的插入功能。但每次我运行脚本时,两个pdo命令都被执行了。 PDO最终在我的表中写了一行,其中的条目是'public'。

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

答案 2 :(得分:1)

Oke伙计们,找到了解决这个问题的完全疯狂的解决方案。只是发布以供将来参考。我最近在Chrome中安装了一个HTML验证程序(扩展程序)。这似乎是罪魁祸首。一切都加载后,验证器似乎重新请求页面,因此它执行两次。 好的插件。不! 我花了大约半天的时间来解决这个问题。

答案 3 :(得分:0)

我看到同样的行为......第一次页面运行时会出现$ _POST,然后第二次不会出现... ...搜索代码以查找页面可能回发的原因本身又来了。没有用。

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

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

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

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