2012-05-28 106 views
3

好吧未定义功能,这是我的代码是什么样子呼叫从另一个php文件

的index.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 

任何想法我做错了什么? 谢谢

+1

给出这些信息的唯一解释是你没有包含你认为你包含的文件。 – JJJ

+2

'echo $ WebsiteRoot。 “/include/testfile.php”;'你看到了什么? – Sampson

+0

如果您的index.php托管在与include文件夹相同的文件结构级别上,则不需要$ WebisteRoot变量。我想这个错误来自于此。 – nullpointr

回答

1

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

如果你想从网站上的任何地方,而不用担心相对位置链接到同一位置,然后在文件的开头,就把:

$WebsiteRoot=$_SERVER['DOCUMENT_ROOT']; 

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

+0

对不起,这不是问题,$ WebsiteRoot被定义为网站的网址 – user1071461

+0

其实,如果将$ WebsiteRoot设置为$ _SERVER ['DOCUMENT_ROOT'],它似乎工作 – user1071461

+2

不要使用URL来包含本地文件!改用文件系统路径。如果您使用URL获取文件,服务器会解析文件而不是提供代码。你可能通过这个空白文件。 – JJJ

1

尝试从testfile.php调用另一个函数,如果这不工作,它的东西与包括。添加代码:

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

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

,我可以预见的是,您使用的网址,而不是一个路径的问题,你的$ websiteRoot变量应包含类似的路径:

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

,而不是一个网址,如:

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

将此添加到索引的顶部。PHP我得到了相同的结果 – user1071461

+0

这些行不会解决你的问题,但显示你的错误,从那里你可以调试。我已经为你更新了答案。 –

4

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

请记住......有没有这样的事情作为一个PHP脚本。只有包含PHP代码块的文件。如果没有至少一个<?php开始标记,PHP解释器将永远不会被调用,并且文件的内容将被简单地视为输出。