0

純粋なphpまたはajax呼び出しでphp関数を使用しているときに、(少なくとも私にとっては)パスの新しい奇妙な動作に遭遇しました。

php のみを使用する場合、php 関数のパスは次のようになります。

require_once('wp-content/themes/xxx/tcpdf/tcpdf.php');

しかし、まったく同じ関数を ajax 呼び出しで使用する場合、機能させるにはパスを次のようにする必要があります。

require_once('../tcpdf/tcpdf.php');

なぜそうなのか説明してもらえますか?どうもありがとうございました!

4

3 に答える 3

2

その動作が発生する理由は、すべてのインクルードがワードプレスのインストールのルートから発生しているため、ファイルに到達する前にディレクトリ構造を数層下に移動していると言っているからです。分解するとこんな感じ。

wp-content/  Go down one directory level from the file i'm in
themes/      Then go down into the themes directory
xxx/         Then go to the xxx directory
tcpdf/       Then go to the tcpdf directory
tcpdf.php  This is the file you want

2番目のインクルードを行っているとき、親を共有するディレクトリにいるwp-content/themes/xxx/tcpdf/ので、あなたが言っていることは

../        Go up one directory level
tcpdf/     Go into the tcpdf directory
tcpdf.php  This is the file you want
于 2013-05-16T16:42:59.983 に答える
1

へのインクルード パスを再定義しますset_include_path ( APP_ROOT )。そうすることで、すべての include/require は、定数で定義するアプリケーション ルートに対して相対的になりますAPP_ROOT

PHP は通常、インクルード パスとして現在のディレクトリを持っているため、このような問題が発生する可能性があります。

于 2013-05-16T16:22:45.380 に答える