5

さて、これは私のコードがどのように見えるかです

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

私が間違っていることについて何か考えはありますか?ありがとう

4

5 に答える 5

6

含まれているファイルにタグが含まれていない<?phpため、プレーンテキスト入力として解釈されます。

覚えておいてください...PHPスクリプトのようなものはありません。PHPコードブロックを含むファイルのみがあります。少なくとも1つの<?php開始タグがないと、PHPインタープリターが呼び出されることはなく、ファイルの内容は単に出力として扱われます。

于 2012-05-28T17:13:29.043 に答える
1

testfile.phpから別の関数を呼び出してみてください。これが機能しない場合は、インクルードを使用してください。コードを追加します。

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

index.phpの先頭に移動し、ブラウザを更新してエラーを確認し、そこからデバッグしてみてください。

私が予測できる問題は、パスの代わりにURLを使用していることです。$websiteRoot変数には次のようなパスが含まれている必要があります。

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

次のようなURLの代わりに:

$websiteRoot = "http://www.somesite.com";
于 2012-05-28T16:35:19.153 に答える
1

同様の問題がありました。含まれているファイルでPHPを調べたところ、無効なPHPタグが見つかりました。私は<?の代わりに持っていました<?php。PHP 7.2以前はそれを許していましたが、PHP7.3はあなたが直面したのと同じエラーをスローしていました。

于 2019-05-31T03:37:09.583 に答える
0

自分が思っているファイルが含まれていることを確認してください。あなたのindex.phpページがあなたが述べたように正確に見える場合、それは何も返しません。

相対的な場所を気にせずにサイトのどこからでも同じ場所にリンクしたい場合は、ファイルの先頭に次のように入力します。

$WebsiteRoot=$_SERVER['DOCUMENT_ROOT'];

また、ファイルがhttp://mywebsite.com/include/testfile.phpにある場合は、正常に機能するはずです。

于 2012-05-28T16:35:44.867 に答える
0

含まれているファイルの名前を変更してみてください。

「system.php」という名前のインクルードファイルがありました。includeコマンドがスキップされたように見えました。最も厳密なエラー報告があっても、メッセージはなく、インクルードされたファイルの本体にあるechoコマンドでさえ出力を生成しませんでした。PHP 5では問題なく動作していましたが、7.2環境にアップグレードした後、これらの問題が発生しました。多くの努力の後-私は方法を忘れました-私はなんとかエラーメッセージを受け取ることができました。「system」という名前のPEARクラスとの競合があったとのことです。しかし、私のファイルにはクラスは含まれていませんでした。変数と関数だけが含まれていました。とにかく、ファイルに「system.php」以外の名前を付けるとうまくいきました。

他の誰かがここで何が悪かったのかについてもっと技術的なコメントを追加できることを願っています。

于 2020-02-21T09:15:56.127 に答える