2011-12-26 10 views
0

PHPファイルで次のエラーが発生しました。警告:include(../config/config.php)[function.include]:PHPでストリームを開けませんでした

​​

私は

  • 機能/ function.php
  • のconfig/config.phpの
  • サインアップ/サインアップ/index.php
    1. ROOTフォルダを私のフォルダ構造を記述してみましょう。 ph

    今、もし私が絶対パスを使用すると、それはsignup.phpで同じエラーを出し、相対パスを使用するとindex.phpでこのエラーが発生します。

    助けていただければ幸いです。

  • +0

    質問をすることがわかっている場合は、なぜ答えを受け入れないのですか?それはあなたがしなかったからです。あなたの質問にはどんな解決策もありませんか? –

    答えて

    3

    使用

    include("$_SERVER[DOCUMENT_ROOT]/config/config.php"); 
    
    3

    ファイルパスは、が呼び出されたスクリプトからの相対パスです。アプリケーションがhttpリクエストによってindex.phpに呼び出された場合、include()パスは、includeステートメント自体がfunctions.phpスクリプトにある場合でも、それに相対的なパスである必要があります。

    共通の問題を回避するには、ドキュメントのルートに関連するすべてのパスが絶対にすることである。

    include("$_SERVER[DOCUMENT_ROOT]/config/config.php"); 
    // Note: leaving out array keys only valid in double quote string context. 
    

    同様のindex.phpとのfunctions.phpに働くだろう。

    +0

    reply marioに感謝します。この問題を解決するにはどうすればよいですか? – Manoj

    +1

    __FILE__からパスを作成して、実行パスの代わりにスクリプトに擬似的に相対パスを作成できることに注意してください。 dirname(\ _ \ _ FILE \ _ \ _)が含まれています。 '../blah.php'; – Corbin

    +0

    @ManojNakum:もう一つのオプションは、Corbinが述べたように相対パスを構築することです。あるいは関連するスクリプトを扱いやすくするために 'include_path ='を設定することさえできます。私はちょうどDOCUMENT_ROOTアプローチを教えてくれました。これはあなたの質問で私が推測したルートフォルダの問題についても説明しています。 – mario

    0

    使用include __DIR__."/../config/config.php";あなたが現在で実行しているファイルへのファイルの相対を含めたい場合。あなたが5.3.0よりも古いPHPのバージョンを使用している場合(あなたが「shouldn t)は、__DIR__dirname(__FILE__)に置き換えます。

    $_SERVER['DOCUMENT_ROOT']は、コマンドラインを使用しているときに設定されておらず、ユーザーが希望する場所に配置できる代わりにプロジェクトがDOCUMENT_ROOTを基準にしている必要があります。 phpMyAdminがこの変数を使用した場合、必要な場所に配置するのではなく、その変数を使用する必要があります。それは別のことですが、それは変数なので、潜在的なセキュリティ上の問題もあります。

    config.phpが必要な場合は、代わりにを使用することをお勧めします。存在しないときは警告を表示しないようにしてください。使用することを意図している)。

    +0

    aaand config.phpが一度必要な場合、require_once() – hanshenrik

    +0

    (include | require)(_ once)?関数ではなく言語構造であるため、かっこは必要ありません。不必要なものの上に、私は他の人にそれを明らかにするためにそれらを使用しないことを好む。 –

    関連する問題