1

PHPにファイルを含める必要があるので、そうします

$web_proc = '../res/proc'; //variable read from config file I can't change
//in my file
include_once($web_proc . '/check_sprache.php');

および PHP 出力:

警告: include_once(../res/proc/check_sprache.php): ストリームを開くことができませんでした: No such file or directory in /Users/user/Sites/site/res/pdf/rechnung.php 行 62
警告: include_once( ): 62 行目の /Users/user/Sites/site/res/pdf/rechnung.php に含めるための '../res/proc/check_sprache.php' のオープンに失敗しました (include_path='.:')

したがって、インクルード パスを変更します。

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__) . DIRECTORY_SEPARATOR);

もう一度試してみてください。ただし、PHP の出力は次のとおりです。

警告: include_once(../res/proc/check_sprache.php): ストリームを開くことができませんでした: No such file or directory in /Users/user/Sites/site/res/pdf/rechnung.php 行 62
警告: include_once( ): /Users/user/Sites/site/res/ に含めるための '../res/proc/check_sprache.php' のオープンに失敗しました (include_path='.::/Users/user/Sites/site/res/') pdf/rechnung.php の 62 行目

しかし、もし私がそうするなら

include_once(dirname(__DIR__). DIRECTORY_SEPARATOR . $pfadweb_proc . '/check_sprache.php');

できます。しかし、これは解決策ではありません。インクルードされたファイルには相対パスを持つファイルがさらに含まれているため、それらも見つからないためです。

したがって、PHP のインクルード パスを誤解しているか、単にトローリングしているだけです。

誰でも助けることができますか?

4

1 に答える 1

0

2 番目の例では、インクルード パスが奇妙に見えます。これが問題だとは思いませんが、2PATH_SEPARATOR文字と末尾があります。DIRECTORY_SEPARATOR

代わりにこれを試してください

set_include_path(implode(PATH_SEPARATOR, [ // use array() if PHP < 5.4
    dirname(__DIR__), // this should be /Users/user/Sites/site/res
    get_include_path()
]));

include_once 'proc/check_sprache.php';

/Users/user/Sites/site/resこれにより、CWD ( ) の親ディレクトリ ( ) が/Users/user/Sites/site/res/pdfインクルード パスに追加されます。

include他のファイル内のステートメントは、 からの相対パスを使用できます/Users/user/Sites/site/res

于 2014-06-05T01:14:43.880 に答える