0

DebianSqueezehttp://www.example.com/で実行中のドキュメントがあります。/home/www/example.com/www

/home/www/example.com/
    www/
         index.php
    php/
         include_me.php

php.iniで、コメントを外して次のように変更しました。

include_path =".:/home/www/example.com"

wwwのスクリプトindex.phpには、がありrequire_once("/php/include_me.php")ます。PHPから取得する出力は次のとおりです。

Warning: require_once(/php/include_me.php) [function.require-once]: failed to open stream: No such file or directory in /home/www/example.com/www/index.php on line 2

Fatal error: require_once() [function.require]: Failed opening required '/php/include_me.php' (include_path='.:/home/www/example.com') in /home/www/example.com/www/index.php on line 2

ご覧のとおり、エラーに応じてインクルードパスが正しく設定されています。しかし、私がそうすればrequire_once("../php/include_me.php");、それは機能します。したがって、include-pathに問題がある必要があります。

誰かが私がそれを修正するために何ができるか知っていますか?

4

6 に答える 6

7
php/

は相対パスであり、現在のディレクトリを開始点として使用します

./php/

は相対パスであり、現在のディレクトリ( 。)を開始点として明示的に宣言します

/php/

は相対パスではありません。これは、開始点が最上位ディレクトリ(ルートディレクトリ/)であることを意味します。

于 2012-06-07T15:56:42.123 に答える
2

require_once( "/ php / include_me.php")の説明:

'/home/www/example.com/'にインクルードパスを設定していますが、これは/ home/wwwのサブディレクトリです。require_onceは/php/include_me.phpを探しています。

/
home/
    www/
        example.com/
              php/
              www/
php/
    include_me.php

/php/include_me.phpを探しているrequire呼び出しに先行する/があります。/home/www/example.com/php/include_me.phpを探すには、次のようにします。

require_once('php/include_me.php');

インクルードパスを次のように設定することもできます。

include_path =".:/home/www/example.com/:/home/www/example.com/www/:/home/www/example.com/php/"
于 2012-06-07T16:00:33.697 に答える
2

上のドキュメントからinclude

パスが定義されている場合(絶対(Windowsではドライブ文字または\で始まる、Unix / Linuxシステムでは/で始まる)、または現在のディレクトリに対して相対的(。または..で始まる))、include_pathは完全に無視されます。たとえば、ファイル名が../で始まる場合、パーサーは親ディレクトリを調べて、要求されたファイルを見つけます。

この場合、絶対パスを指定しているため、include_pathは無視されます。

于 2012-06-07T15:57:55.597 に答える
2

私はMihaiStancuに同意しますが、ディレクトリが移動してもコードが壊れないように、dirname(__ FILE__)を使用することを含める方がよい場合があることを付け加えたいと思います。これは絶対パスのように機能しますが、ローカルパスと考えることができます。

于 2012-06-07T15:59:29.923 に答える
1

あなたのrequireの最初のスラッシュはルートから検索します...試してみてください:

require_once('php/include_me.php');
于 2012-06-07T15:58:09.080 に答える
1

これは、Webディレクトリではなく、ファイルシステムの/phpにあるファイルを文字通り取得しようとしています。

require_once("/php/include_me.php");
于 2012-06-07T15:58:28.393 に答える