WebサーバーまたはTomcatを使用する場合の絶対パスと相対パスの違いは何ですか?
3 に答える
絶対パスは / で始まり、現在のサイト (または仮想ホスト) のルートからの場所を参照します。
相対パスは / で始まらず、参照元のドキュメントの実際の場所からの場所を参照します。
ルートがhttp://foo.com/site/であると仮定した例
サイトのどこにいても絶対パス
/foo.html
http://foo.com/site/foo.htmlを参照します
含まれるリンクがhttp://foo.com/site/part1/bar.htmlにあると仮定した相対パス
../part2/quux.html
http://foo.com/site/part2/quux.htmlを参照します
また
part2/blue.html
相対パスも主観的であることに注意してください。
すなわち:
<?php
#bar.php
require('../foo.php');
?>
/dir/bar.php /foo.php # を出力します /dir/foo.php # b を出力します /dir/other/ # 空のディレクトリ
$ pwd > / $ php dir/bar.php > / + ../foo.php == /foo.php > を出力します $ cd ディレクトリ $ php bar.php > /dir + ../foo.php = /foo.php > を出力します $ cd その他 $ php ../bar.php > /dir/その他 + ../foo.php = /dir/foo.php > プリント b
これは、特に相対参照を含む多数のファイルと、相対パスの相対パスを制御する「エントリ ポイント」として機能する可能性のある場所が複数ある場合に、かなり混乱する状況を引き起こす可能性があります。
このような状況では、既知の固定値に基づいて手動で絶対パスを計算する必要があります。
<?php
require( realpath(dirname(__FILE__) . '/../foo.php') )
また
<?php
require( SOMECONSTANT . '/relative/path.php' );
また
<?php
require( $_SERVER['DOCUMENT_ROOT'] . '/relative/path.php' );
試行錯誤の結果、Tomcat のパスの開始点は webapps フォルダーであることがわかりました。
つまり、Java コードが ../somefile.txt を読み取ろうとしている場合、そのファイルへの絶対パスは %TOMCAT_HOME%/webapps/../somefile.txt 、つまり %TOMCAT_HOME%/webapps/somefile.txt になります。