1. ホーム
  2. php

PHPのインクルード相対パス

2023-09-30 17:22:10

質問

私は、/root/update/test.phpというファイルを持っています。また、/root/connect.phpというファイルもあります。このファイルには、以下の行があります。

include "../config.php";

/root/update/test.phpの中に。というコードがあります。

set_include_path(".:/root");
include "connect.php";

/root/update/test.phpを実行すると、connect.phpは見つかりますが、config.phpが見つからず、以下のような結果になります。

PHP Warning:  include(../config.php): failed to open stream: No such file or directory in /root/connect.php on line 2
PHP Warning:  include(): Failed opening '../config.php' for inclusion (include_path='.:/root')

これは、警告が、私がすべてを正しく行っているように見えるので、私には混乱しています - インクルードパスは /root で、それは存在するファイル ../config.php (/config.php) を捜しています。どなたか、これを解決していただけませんか?絶対パスを使用することは、私がアクセスできない本番サーバーにデプロイするため、私のためのオプションではないことに注意してください。

Ubuntu/Apache

どのように解決するのですか?

を使用して常にそれを含めることができます。 __DIR__ :

include(dirname(__DIR__).'/config.php');

__DIR__ は、' 魔法定数 ' で、現在のファイルのディレクトリを、末尾のスラッシュを除いた形で返します。これは実際には絶対パスで、ファイル名を連結して __DIR__ . この場合、ディレクトリを昇順にする必要があるため、PHP の dirname を使用します。これはファイルツリーを上昇させ、ここから config.php .

このメソッドでルートパスを設定することもできます。

define('ROOT_PATH', dirname(__DIR__) . '/');

を実行すると、ルートが /root/ レベルに設定します。

include(ROOT_PATH.'config.php');

これで、設定ファイルを好きなところから取り込むことができるはずです。