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();
?>

includeディレクトリがドキュメントルートの上にある場合..でも、ルートから参照するために使用できます。

于 2011-04-23T04:04:50.510 に答える
9

したがって、同じ問題を抱えているためにこのフォーラムに出くわしたことがある場合は、何が問題で、なぜ問題が発生したのかを説明させてください.

ディレクトリにない関数 (c:// や file:// など) を含め、代わりに http を使用する場合。インクルードは、ファイルにエコーされたもののみを返すことができますが、変数や関数のようなものは表示されません。そのため、常にディレクトリを介して関数と変数を含めます

于 2011-04-23T12:49:42.413 に答える
4

include の代わりに require() を試してください。インクルードが失敗し、エラーが表示されていない可能性があります。

于 2011-04-23T03:50:12.570 に答える
3

私もその問題を抱えています。

私の場合、「functions.php」ファイルのアクセス許可が拒否された可能性があることがわかりました。

サーバーで「chmod 777 functions.php」を試してみてください。

functions.php を Web サーバーで実行できるようにします。

Thatjuan に感謝します。require() を使用するように変更すると、サーバーは正しいエラー メッセージを表示します。

于 2016-08-24T10:26:07.973 に答える