5

好吧,这就是我的代码的样子

索引.php

require_once($WebsiteRoot . "/include/testfile.php");
TestFunction();

/include/testfile.php

function TestFunction()
{
    echo "It Works";
}

它给了我错误:

Fatal error:
Call to undefined function TestFunction() in /path/index.php on line 49

知道我做错了什么吗?谢谢

4

5 回答 5

6

您没有<?php在包含的文件中包含标签,因此它只是被解释为纯文本输入。

请记住……没有 PHP 脚本之类的东西。只有包含 PHP 代码块的文件。如果没有至少一个<?php开始标签,PHP 解释器将永远不会被调用,文件的内容将被简单地视为输出。

于 2012-05-28T17:13:29.043 回答
1

尝试从 testfile.php 调用另一个函数,如果这不起作用,则它与包含有关。添加代码:

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

到 index.php 的顶部并刷新浏览器以查看您的错误,尝试从那里进行调试。

我可以预见的问题是您使用的是 URL 而不是路径,您的 $websiteRoot 变量应该包含如下路径:

$websiteRoot = "/var/www/html/websiteName";
OR
$websiteRoot = "C://xampp/htdocs/websiteName";

而不是像这样的 URL:

$websiteRoot = "http://www.somesite.com";
于 2012-05-28T16:35:19.153 回答
1

我有一个类似的问题。我在包含的文件中挖掘了 PHP,发现了一个无效的 PHP 标签。我有<?而不是<?php. PHP 7.2 和更早的版本原谅了这一点,但是 PHP 7.3 抛出了你遇到的同样的错误。

于 2019-05-31T03:37:09.583 回答
0

确保您包含您认为的文件。如果您的index.php页面看起来与您所说的完全一样,那么它不会返回任何内容。

如果您想从站点上的任何位置链接到相同的位置而不用担心相对位置,那么在文件的开头,输入:

$WebsiteRoot=$_SERVER['DOCUMENT_ROOT'];

它应该可以正常工作,前提是您的文件位于http://mywebsite.com/include/testfile.php

于 2012-05-28T16:35:44.867 回答
0

尝试重命名包含的文件。

我有一个名为“system.php”的包含文件。看起来好像刚刚跳过了包含命令。即使使用最严格的错误报告,也没有消息,甚至包含文件主体中的 echo 命令也没有产生输出。它在 PHP 5 下运行良好,但在升级到 7.2 环境后出现了这些问题。经过很多努力 - 我忘记了如何 - 我设法收到一条错误消息。它说与名为“system”的 PEAR 类存在冲突。然而我的文件不包含任何类,只包含变量和函数。无论如何,给文件命名为“system.php”之外的其他名称对我有用。

我希望其他人可以添加更多关于这里出了什么问题的技术评论。

于 2020-02-21T09:15:56.127 回答