Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “随机出现”;“无法重新定义…”;错误_Php_Windows_Iis - Fatal编程技术网

Php “随机出现”;“无法重新定义…”;错误

Php “随机出现”;“无法重新定义…”;错误,php,windows,iis,Php,Windows,Iis,PHP 5.6、Windows Server 2016、IIS 10 PHP中的任何人都很熟悉该错误: PHP Fatal error: Cannot redeclare mainContent() (previously declared in [the controller file]:12) in [some included file] on line 29 事情是这样的:这个错误刚刚出现。一个已经运行了好几天而没有被触动的程序刚刚开始抛出错误。当我重新启动IIS时,错误消失,一切恢

PHP 5.6、Windows Server 2016、IIS 10

PHP中的任何人都很熟悉该错误:

PHP Fatal error:  Cannot redeclare mainContent() (previously declared in [the controller file]:12) in [some included file] on line 29
事情是这样的:这个错误刚刚出现。一个已经运行了好几天而没有被触动的程序刚刚开始抛出错误。当我重新启动IIS时,错误消失,一切恢复正常

这与此错误类似:

所以这里不是:

  • 函数不会在程序中的任何地方声明两次。有问题的函数名“mainContent”在任何程序中都是保留和使用一次且仅使用一次的
  • 每个include/require都是include\u一次或require\u一次,没有例外,因此它不是双重include
我确信这两个事实,因为我是唯一的开发人员,所以没有其他人可以进行更改,更不用说在我不知道的情况下破坏代码了

当我搜索一个解决方案时,我发现无论我是在Google/Bing/Yahoo/stackoverflow/reddit上,都是对double include的常见解释,或者两次声明该函数。这个错误只会出现在一个运行了几天没有出现这个错误的未接触程序上,然后随着IIS重启而消失。代码里没有

我不是唯一遇到过这个问题的人,但我找不到解决办法


(我打算将网站升级到PHP7,但这不是一个11转换,客户的日常业务无法忍受停机时间,因此我在这里停留了一段时间。)

下面是一个简单的示例,重现您报告的问题:

<?php
function foo(int $a) {
    echo $a;
    echo "\n";
}

function bar(int $b) {
    echo $b;
    echo "\n";
}

echo "I'm running. gonna redeclare\n";

function foo(int $x) {
    print "i'm the redeclared foo\n";
}

foo(23);

echo "finito\n";

如果您能够分享一些相关的代码,您可能会更容易思考您的问题并提供一些帮助。谢谢,但代码并不相关。这一切都在解释中:前一刻没有错误,下一刻就有错误。没有代码更改。如果我的描述不清楚,我很抱歉,我感谢您花时间重申十几个谷歌搜索已经说过的话,但是,请原谅,您似乎没有阅读我写的内容。有一点澄清:一旦发生错误,错误将持续存在,重新启动IIS将修复该问题。我认为重新启动IIS不会对代码进行更改,从而修复函数重新声明(如果存在)是错误的吗?