2

相対パスでrequire/ファイルを作成しようとしています。includeパスが存在し、すべての権限がチェックされます。含まれるスクリプトは読み取り可能であり、ブラウザのURLを介してアクセスできます...

ただし、開くことができなかったというエラー/警告が表示されます。呼び出し元のスクリプトと含まれるファイルの両方が同じサーバー上にあります。

発信者の親戚:

/devel/phi/dev/appcenter-head/appcenter/application/nm/index.php

発信者の場所:

/home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm

親戚が必要:

/devel/nm/dev/http-api/http-api/src/httpapi.inc.php

必要な場所:

/home/devel/wwwroot/nm/dev/http-api/http-api/src

私が試したこと:

$strHttpApiUrl = "/devel/nm/dev/http-api/http-api/index.php";
$strFile = "/src/httpapi.inc.php";
$strDirName = dirname( $strHttpApiUrl );
$strRealpath = realpath( $strDirName . $strFile );
require_once $strRealpath;

失敗する:PHP Warning: require_once(/home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm) [<a href='function.require-once'>functio n.require-once</a>]: failed to open stream: No such file or directory in /home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm/class/TWinLogin.php

また、次の場合に失敗します。PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required '' (include_path='.:/opt/nm/appcenter40-server-php53/lib/php')

また、文字列URLを含めるか、絶対パスを使用してプレーンを試しました...

そのファイルを含めるにはどうすればよいですか?


編集

これには、次のファイルが正常に含まれています。

require_once '/home/devel/wwwroot/nm/dev/http-api/http-api/src/httpapi.inc.php';

したがって、次の相対パスを取得すると仮定して、その作業パスを取得するにはどうすればよいですか。

/devel/nm/dev/http-api/http-api/index.php

4

1 に答える 1

2

realpathは、ファイルシステム内の実際のパス(絶対パス)を取得しようとします。したがって、おそらくスラッシュで始まります。

結果のパスがスラッシュで始まり、phpがそれを要求/インクルードしようとすると、おそらくそれは絶対的なものと見なされます。また、既存のファイルが表示されない場合は、これらのエラーが発生します。

相対パスを使用する場合は、realpathを避けてください。

于 2013-03-25T14:55:05.363 に答える