从另一个 php 文件调用未定义的函数


Call to undefined function from another php file

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

索引.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

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

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

记得。。。没有PHP脚本这样的东西。只有包含PHP代码块的文件。如果没有至少一个<?php开始标记,PHP 解释器将永远不会被调用,文件的内容将仅被视为输出。

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

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

到索引顶部.php刷新浏览器以查看错误,请尝试从那里进行调试。

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

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

而不是像这样的网址:

$websiteRoot = "http://www.somesite.com";

我也有类似的问题。我在包含的文件中深入研究了 PHP,发现了一个无效的 PHP 标签。我有<?而不是<?php.PHP 7.2 及更早版本原谅了这一点,但 PHP 7.3 抛出了与您面临的相同错误。

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

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

$WebsiteRoot=$_SERVER['DOCUMENT_ROOT'];

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

尝试重命名包含的文件。

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

我希望其他人可以就这里出现的问题添加更多技术性评论。