1

私は3つのphpファイルを持っています。「upper」ファイルはWebページです(Sample.phpと呼びましょう)。ページの上部でこれを行います:

<body>
<?php include("../Top.php"); ?>
//Webpage content
</body>

Top.phpファイルは、簡単に変更できるようにメニューとバナーが保存されたファイルです。Top.phpファイルには次のような行があります。

<?php include("ConnectToDB.php"); ?>

ConnectToDB.phpは、データベースに接続するためのphpコードを含むファイルです。

ここでは、ファイルシステムは次のように順序付けられています。

  • ルートフォルダ
    • ConnectToDB.php
    • Top.php
    • OtherSample.php
    • 記事
      • Sample.php

Sample.phpにアクセスすると、ステートメントinclude("ConnectToDB.php");内でエラーが発生します。しかし、ステートメントを含むinclude("../Top.php");ファイルがある場合、エラーは発生せず、Top.phpとConnectToDB.phpの両方が完全に機能します。何が問題ですか?OtherSampleinclude("Top.php");

4

4 に答える 4

5

あなたが使用することができます:

include_once($_SERVER['DOCUMENT_ROOT'].'/RootFolder/whatever.php');

ファイルをインクルードするには、この方法で常にインクルードの絶対パスを取得し、それが呼び出された場所に依存しません。

于 2012-05-03T14:05:03.863 に答える
3

「include」ステートメントは実際にコードをページに移植します。include("ConnectToDB.php")Sample.php から実行されるため、パスが間違っている ことに注意してください。

正しいコード行は次のようになります。include("../RootFolder/ConnectToDB.php")

whereは、使用中..のディレクトリ構造全体を表し"localhost/"ます。

于 2012-05-03T13:25:07.300 に答える
1

Sample.phpを呼び出すと、パスが間違っています。すべてのパスは、Sample.phpが配置されているベースに属します。PHPは間違ったフォルダでConnectToDBを検索します...Sample.phpファイルからのように../ConnectToDB.phpを試してください。このファイルは1つ上のフォルダにあります...

より良い解決策は、絶対パスを使用してください!

于 2012-05-03T13:25:22.450 に答える
0

同じ問題が発生しました。残念ながら、サムソンの答えは私の問題を解決できません。あなたはこれを試すことができます。それは私にとってはうまくいきます。ファイルの存在チェックを追加してから、次のように Top.php に正しいパスを追加します

<?php
if (file_exists("ConnectToDB.php")) {
    include_once("ConnectToDB.php");
}elseif(file_exists("../ConnectToDB.php")){
    include_once("../ConnectToDB.php");
}
?>

その後、正しいパスにアクセスできます。

于 2014-07-17T07:28:50.893 に答える