2017-08-17 13 views
1

まあは、サイトの構造が簡単である:そのようなファイルやディレクトリ(パス・エラー)

site.com

  1. 'config' フォルダ
    • config.phpの
    • セザール.php
  2. login」フォルダ
    • のindex.php
  3. のindex.php

のconfig.php:site.com/index.php

include_once '../config/cesar.php'; 

Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory 

site.com/login/index.phpであれば問題ありません。


1つのドット(./config/cesar.php)を削除すると、メインインデックスはOKになり、ログインページにエラーが表示されます。 両方のコードを動作させるには?

+0

../config/xxx.php 

のようなあなたのパスを置き換える** ... **戻ったディレクトリに行くことを意味します。 ** config.phpとcesar.php **はどちらも同じフォルダにありますので、** .. **を置く必要はありません。** include_once '/config/cesar.php';** –

+0

@CamiloGo、ログインページで/config/cesar.phpがエラーを返します。 –

+0

** include_once '../config/cesar.php';**これはindex.phpにアクセスし、cesar.phpが別のフォルダにあるので' login 'フォルダのみです。ディレクトリを上に移動して、そのフォルダを見つける必要があります。 –

答えて

1

パス内の..は、ファイルが探している場所に存在しないため、ディレクトリを上に移動するために使用されます。

include_once 'config/cesar.php';に更新すると、index.phpが存在するconfig 1レベルの名前のディレクトリを見つけようとするのではなく、configディレクトリに移動できるようになります。

./は、.が現在のディレクトリの表記であるため動作します。

あなたの質問に答えるには、両方のファイルが含まれているサーバーの別の場所にあるため、相対パスを使用してコードを動作させることはできません。そうする場合は、相対パスではなく絶対パスを使用する必要があります。 * nixでは/path/to/webdirectory/site.com/path/to/file/config.php(つまり/home/charles/websites/site.com/config/config.php)、WindowsではC:\path\to\webdirectory\site.com\path\to\file\config.phpとなります。

PHPでは、$_SERVER['DOCUMENT_ROOT']変数を使用して絶対パスを動的に取得できるはずです。例:include_once $_SERVER['DOCUMENT_ROOT'] . '/config/cesar.php';

+0

config/cesar.phpでログインページのエラーが表示されます –

+0

@EdgarCooper申し訳ありませんが、私はあなたが両方のファイルで同じコード行。可能な限り、相対パスではなく絶対パスを使用する必要があります。 – Charles

+0

よく、それは快適ではありません、ありがとう –

-1

Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory

私はかつて、同様の問題に遭遇しました。 (./config/xxx.php)(config/xxx.php)は同じことを意味することを覚えておく必要がありますが、(../config/xxx.php)はディレクトリを上ってconfigフォルダとxxx.phpファイルを探します。

すべてのパスの先頭に文字列として$base_urlを使用して、きれいにすることもできます。どこ:

$base_url = 'http://' . $_SERVER['SERVER_NAME']; 

その後

$base_url.'/config/xxx.php' 
+0

これはどこでも動作しない可能性があります。 '$ _SERVER ['DOCUMENT_ROOT']'はリモートファイルを含んでいないので安全です。 HTTPやFTP経由のインクルードについては、php.iniで特定の設定を有効にする必要があります。http://php.net/manual/en/features.remote-files.phpを参照してください。 – Charles

関連する問題