Php包括不工作?功能不包括在内

时间:2011-04-23 03:47:49

标签: php function include-path

以下是情况的完整背景:

我最近买了一台新Mac,我是一名php开发人员,所以我下载了MAMP并开始开发。

首先我注意到我的包含没有被包含在内,但是我通过配置php.ini来改变它。

但是现在,当我尝试使用函数包含文件时,它无法识别该函数。

例如,我有一个名为functions.php的文件:

<?php
function doit(){
    echo "did it";
}
?>

和包含它的文件名为index.php

<?php include("functions.php"); doit();?>

我收到此错误消息

致命错误:在第4行的index.php中调用未定义的函数doit()

6 个答案:

答案 0 :(得分:25)

有时当前目录不是您期望的目录,例如当您从包含文件中包含文件时。

我喜欢在我的包含上使用$_SERVER['DOCUMENT_ROOT'],以便我始终可以从我网站的根目录中完全引用它们:

<?php
    include($_SERVER['DOCUMENT_ROOT']."/includes/functions.php");
    doit();
?>

如果您的包含目录位于文档根目录之上,则可以使用..仍然从根目录引用。

答案 1 :(得分:9)

因此,如果有人偶然发现这个论坛,因为他们遇到了同样的问题,请让我解释一下它出错的原因和原因。

如果您不包含目录中的函数(例如c://或file://),而是包含使用http。 include只能返回文件中回显的内容,但不会显示类似变量或函数的内容。所以总是通过目录包含函数和变量

答案 2 :(得分:2)

尝试使用require()而不是include。也许包含失败并且没有显示错误。

答案 3 :(得分:0)

我也遇到过这个问题。

就我而言,我发现它可能是你的“functions.php”文件Permission denied。

请尝试在服务器中“chmod 777 functions.php”。

让functions.php可以在Web服务器中执行。

感谢Thatjuan,Becasue当我更改为使用require()时,服务器显示正确的错误消息。

答案 4 :(得分:0)

对我来说,问题是由于包含文件中的函数名与初始文件中的函数同名。

我使所有的功能名称都独一无二,不再有问题。

答案 5 :(得分:0)

这很奇怪。我有以下几点。

include_once('assets\include\page-essentials\functions-init.php'); 
include_once('assets\include\page-essentials\functions-api.php');
include_once('assets\include\php\results.php');
include_once('assets\include\page-essentials\url-availability.php');

//require($_SERVER['DOCUMENT_ROOT']."\FBH-2020\assets\include\php\boatfeaturecode.php");
require("\assets\include\php\boatfeaturecode.php");

前三个包括所有包含函数和所有工作的函数(即functions-init.php,functions-api.php和results.php)

需要boatfeaturecode.php的行不起作用,但是带有$ Server ['DOCUMENT_ROOT']的注释行起作用。

我不明白为什么会这样。

这是否是INCLUDE或REQUIRE命令对于它是否有效并不重要。

这是Windows 10上的IIS。目录结构是标准C:\ inetpub \ wwwroot \

我所说的这些文件来自C:\ inetpub \ wwwroot \ FBH-2020 \

包含文件的路径在哪里

C:\ inetpub \ wwwroot \ FBH-2020 \ assets \ ---如前三,四所示,其中包括完美运行。