0

次の3つのファイルがあります

  1. users.php
  2. auth.php
  3. main.php

users.phpディレクトリのルートにあり/ます。auth でありmain.php、テスト フォルダー example /test/auth.php&にあり/test/main.phpます。

Users.php次のphpコードが含まれています。

<?php 
include('test/main.php');
?>

auth.php次のphpコードが含まれています。

<?php 
include('../test/main.php');
?>

main.php コード

<?php
include('test/db.php');
?>

私が実行している場所users.phpでは完全に機能していusers.phpますが、ルートフォルダーにある実行中は完璧な出力が得られますが、実行している場合/test/auth.php

Warning: include(test/db.php) [function.include]: failed to open stream: No such file or directory in /path/db.php on line 2

auth.php 適切な機能を使用してエラーでアクセスする解決策はありますか。

4

2 に答える 2

2

あなたの質問を理解するのに少し苦労しています。ファイル構造は次のようになっていると思います。

  • users.php
  • test(フォルダ)
    • main.php
    • auth.php
    • db.php

db.phpその場合、 fromを含めるにはmain.php、 を実行するだけですinclude('db.php');。現在のフォルダーは、どのファイルを含めるかを決定するために使用されるパスに自動的に含まれます。

ではauth.php、そうしますinclude('../test/main.php');testすでにフォルダにいるので、これは不要です。あなたはそれ..から抜け出すためにそうします、そしてあなたはそれにまっすぐに戻ります!でこれを簡略化できますinclude('main.php');

于 2013-02-08T14:17:17.233 に答える
0

インクルードは常に作業ディレクトリに対して相対的です(実際には、作業ディレクトリが含まれるPATHに対して相対的です)。作業ディレクトリは、実行中のスクリプトによって決まります。次の構造があるとします。

webroot/
    foo.php
    folder/
        bar.php

コマンド ラインまたはfoo.phpブラウザでアクセスして実行すると、作業ディレクトリは. を実行すると、作業ディレクトリは.$ php foo.phplocalhost/foo.phpwebroot/folder/bar.phpwebroot/folder

ファイルに関連するファイルを含めるようにするにincludeは、次のようなものを使用します。

include __DIR__ . '/folder/bar.php`;

それか、PATHを変更してプロジェクト ルートを追加し、常にプロジェクト ルートからの相対パスを含めます。上記のファイル相対インクルードか、オートロードのどちらかを好みます。

于 2013-02-08T14:23:58.643 に答える