简体   繁体   中英

Call to undefined function from another php file

Alright this is what my code looks like

index.php

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

/include/testfile.php

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

And it gives me the error:

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

Any idea what i'm doing wrong? Thanks

You haven't included a <?php tag in the included file, so it's just interpreted as plaintext input.

Remember... there's no such thing as a PHP script. There's only files which contain PHP code blocks. Without at least one <?php opening tag, the PHP interpreter will never be invoked and the file's contents will simply be treated as output.

try calling another function from testfile.php, if this is'nt working, its something with the include. Add the code:

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

to the top of index.php and refresh the browser to see your errors, try debugging from there.

The problem that i can forsee is that you are using a URL instead of a path, your $websiteRoot variable should contain a path like:

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

instead of a URL like:

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

I had a similar issue. I dug into the PHP in the included file and found an invalid PHP tag. I had <? instead of <?php . PHP 7.2 and earlier forgave that, but PHP 7.3 was throwing that same error you faced.

Make sure you're including the file you think you are. If your index.php page looks exactly like you've stated, then it won't return anything.

If you want to link to the same location from anywhere on the site without worrying about relative locations, then at the beginning of the file, put:

$WebsiteRoot=$_SERVER['DOCUMENT_ROOT'];

And it should work fine, provided your file would be located at http://mywebsite.com/include/testfile.php

Try renaming the included file.

I had an included file with the name "system.php". It looked as if the include command was just skipped. Even with the most strict error reporting there was no message and even an echo command in the main body of the included file did not produce output. It had worked ok under PHP 5 but after the upgrade to a 7.2 environment these problems arose. After much effort - I forgot how - I managed to get an error message. It said there was a conflict with a PEAR class with the name "system". Yet my file didn't contain any class, just variables and functions. Anyway, giving the file another name than "system.php" worked for me.

I hope someone else can add a more technical comment on what was going wrong here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM