0

うるさいように聞こえますが、これで約1時間ほど電話を切られました。

JavaScriptでこのように設定されたパスがあります

const JAVASCRIPT =              'host/source/ArcJB.js';

私のドキュメントでは次のようにレンダリングされます。

<script type="text/javascript" src="host/source/ArcJ.js"></script>

前に置くと/、リンクが壊れます。

PHP では、サーバー側のパスに次のように使用します。

<?php
    include_once getcwd() . "/host/source/class.ControlEntry.php";

入れない/と物が壊れます。

概念的には、試行錯誤で髪を抜く必要がないように、どうすればこれを知ることができると思いますか?

また、次の点にも注意してください。

私の .js ファイル内のパスは、パス/の前にある場合とない場合のどちらでも機能し/ます。

これらは、画像検索または ajax 呼び出しに使用されます。

4

3 に答える 3

6

include_once渡すパスはサーバー自体で解決されますが、Javascript のパスはブラウザーによって解決されることに注意してください。どちらも基本的に同じルールに従います。

  • で始まるパス/は絶対解決されます。サーバーでは、これはルート ディレクトリ (つまり、最上位のディレクトリ) です。ブラウザでは、これは基本的にホストと指定しているパスを連結しています。
  • a で始まらないパス/は相対的に解決されます。つまり、サーバーの現在のディレクトリに対して、およびブラウザーのパスに対してです。

のようなディレクトリをgetcwd()返すことを認識して/var/wwwください。それを連結host/source/class.ControlEntry.phpすると、 が得られ/var/wwwhost/source/class.ControlEntry.phpます。ほとんどの (すべてではないにしても) PHP SAPI ではgetcwd()、ファイルをインクルードするときに現在のディレクトリが既に検索されているため、ファイルをインクルードするときに何も省略できます。この場合、/どちらも必要ありません。

最後に、サーバー ファイル パスは URL と一致する必要はありませんhttp://example.com/script.phpにあります/var/www/script.js。HTMLファイルで参照する/script.phpと正しく解決されます。一方、ファイルシステムのルートにinclude "/script.php"あるファイルを検索する を試してはいけませんscript.php。これは、ほとんどの場合、探しているものではありません。

于 2012-05-20T18:47:15.680 に答える
3

先頭のスラッシュは、パスを絶対パスと見なす必要があることを示すために使用されます。つまり、

  1. コンテンツをレンダリングするためにブラウザーによって解析される HTML ファイルに存在する Js パスの場合、ファイルを取得するためにドメインに書き込んだ内容を追加する必要があります。また、スニペットが配置されている現在のページに対して Js ファイルが相対的に配置されている場合、リンクが壊れる可能性があります。
  2. PHPファイルの場合、システムルートをたどってアクセスできるパスにあります。host/source/class.ControlEntry.php
于 2012-05-20T18:48:08.610 に答える
2

ファイルがどこにあるかを知っています。それらへの相対パスまたは絶対パスを使用すると、PHP と JavaScript の両方で機能します。

あなたの例では、上記/はパスが別の場所を指すようにし、アプリケーションを壊します。PHP の例では、特にパス文字列を連結します。これは、の評価に依存しgetcwd()ます。

于 2012-05-20T18:46:49.400 に答える