0

PHP のインクルード機能を使用すると、複数のページで同じコードを簡単に使用できますが、インクルード ファイル、出力、および画像という問題が発生しました。

インクルードが呼び出されるページが変わると、インクルードが呼び出すファイルの場所も変わります。それを得る?

例: 「index.php」という名前を取得しました。「load.php」というファイルも取得しました。そして、ついに「/folder/index2.php」というファイルを取得しました

index.php コード:<?php include("load.php"); ?>

index2.php コード:<?php include("../load.php"); ?>

load.php コード:<?php echo '<img src="image.png"/>'; ?>

index.php をロードすると、画像は本来あるべき姿で完全に表示されます。別のフォルダにある index2.php をロードすると、「load.php」ファイルが正常にロードされます。index2.php がイメージを呼び出しているかのように、イメージが見つからないことを意味します。同じフォルダーにありますが、そうではありません。

それで、これを行う方法はありますか?完全な URL の使用を避けようとしていますが、それが唯一の方法である場合はそれを使用します。より良い選択肢を探しているだけです。

4

3 に答える 3

2

最初にinclude、ドキュメント ルートを使用してファイルを指定してみてください: $_SERVER['DOCUMENT_ROOT']... これは常にパブリック ルート フォルダーに送信されるため、サイトのどこにいても同じになります。include/require他のファイル../load.php... そのシナリオでは、それ自体が相対的に下付き文字 ( |など) を含むインクルード スクリプトsubfolder/load.phpは、フォルダー階層の 2 つの異なるレベルからは機能しません。

<?php include($_SERVER['DOCUMENT_ROOT']."/load.php"); ?>

次に、 html で呼び出されているリソースについては、単純にすべてを public ルートに対して相対的にします。

<?php echo '<img src="/image.png"/>'; ?>

/画像の前にあることに注意してくださいsrc。現在表示されているページがどのフォルダーにあるかに関係なく、常に画像が呼び出されます。

別の方法として、リソースを絶対的に指定することもできます (ただし、サイト ドメインが変更されるとリソース リンクが壊れてしまうため、これは理想的ではありません)。

<?php echo '<img src="http://www.yoursite.com/image.png"/>'; ?>

いずれにせよ、インクルードを呼び出しているスクリプトに関係なく、常に正しい場所から取得され (呼び出しに../etcを追加する必要はありませんinclude)、images/scripts/css/etc は、どのページに関係なくすべて機能します。引き込まれた

于 2013-06-15T02:19:00.317 に答える
1

$_SERVER['DOCUMENT_ROOT']前述のように、インクルード内の現在のパブリック ルートを示します。

画像ソースはスラッシュで開始できます:<img src="/image.png">ブラウザーにドメイン ルートを確認するように指示します。上記の src は、www.example.com またはそのサブディレクトリのいずれかの下のドキュメントに配置されている場合、www.example.com/image.png を確認するようブラウザに指示します。

編集:ベンは編集が速かった

于 2013-06-15T02:28:39.500 に答える
0

config.php を作成することをお勧めします

フルパスに変数を使用する例$imgPath = 'www.host.com/path/images/';

すべてのページの最初に含め、

load.php で使用<?php echo '<img src="'.$imgPath.'image.png"/>'; ?>

load.php をインクルードすると、エラーは発生しなくなります :)

于 2013-06-15T02:24:45.077 に答える