PHP无法重新声明函数错误:为什么我收到此错误?

时间:2015-06-24 20:49:26

标签: php soap include fatal-error

我有两个包含相同包含文件的PHP脚本。此外,出于测试目的,我声明了在两个脚本中执行SOAP操作的相同功能。换句话说,我的脚本如下所示:

#script1.php
include('include.php');

someFn();
function someFn() {
  //SOAP code here
}

#script2.php
include('include.php');

someFn();
function someFn() {
  //SOAP code here
}

每当我尝试运行一个脚本然后另一个脚本时,我会收到以下错误:
PHP致命错误:无法在script2.php中重新声明someFn()(以前在script1.php中声明)

我无法理解为什么我会收到此错误。我之前编写过类似的情况,但从未得到过这个错误,所以我怀疑执行SOAP代码(特别是new SoapClient构造函数和$client->__setSoapHeaders方法)导致了这个错误。 / p>

有趣的是,如果我注释掉包含文件(顺便说一下, 中没有定义someFn),然后重新运行脚本,我没有收到任何错误,一切都很好。

这里发生了什么? 谢谢。

编辑:在玩了一些之后,我发现如果我遇到以下情况:

#script1.php
include('include.php'); //someFn defined in include.php

someFn();

#script2.php
someFn();
function someFn() {
  //SOAP code here
}

然后运行script2.php然后再script1.php,我得到同样的错误。几乎就像我运行script2.php并关闭它之后,这个过程在PHP中继续进行,这样当我运行script1.php时,我就会收到错误。

非常感谢任何帮助 谢谢。

编辑#2 :老实说这是最令人困惑的事情。我重新开始在与其他文件相同的目录中创建两个全新的文件,然后我添加到这两个文件中的所有文件都是以下代码:

<?php

  include('include.php');

当我运行任一文件时,我获得了从目录中的其他文件生成的所有SOAP输出。我没有尝试重新启动服务器,但此时我只能假设在服务器上缓存了一些非常奇怪的东西。

无论如何,我通过简单地创建一个新目录然后将我想要的文件移动到该目录并重新执行它来解决了这个问题。通过这样做,我没有错误,一切都很好。

感谢大家的帮助。

0 个答案:

没有答案