16

以下是情况的完整背景:

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

首先我注意到我的包含没有被包括在内,但我通过配置我的php.ini.

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

例如,我有一个名为functions.php

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

和一个包含它的文件 index.php

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

我收到此错误消息

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

4

5 回答 5

35

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

我喜欢$_SERVER['DOCUMENT_ROOT']在我的包含中使用,这样我就可以始终从我网站的根目录绝对引用它们:

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

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

于 2011-04-23T04:04:50.510 回答
9

因此,如果有人因为遇到同样的问题而偶然发现这个论坛,请让我解释一下出了什么问题以及出现问题的原因。

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

于 2011-04-23T12:49:42.413 回答
4

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

于 2011-04-23T03:50:12.570 回答
3

我也遇到过这个问题。

就我而言,我发现它可能是您的“functions.php”文件权限被拒绝。

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

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

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

于 2016-08-24T10:26:07.973 回答
0

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

我使所有的函数名称都是唯一的,不再有问题。

于 2017-04-17T17:19:40.990 回答