簡體   English   中英

php包含和其他文件的路徑

[英]php Include and path to other files

當使用php include函數時,我可以輕松地在多個頁面上使用相同的代碼,現在遇到的問題是我的include文件,輸出和圖像。

隨着包含調用的頁面發生變化,包含調用的文件位置也隨之變化。 得到它?

示例:我有一個名為“ index.php”的文件。 我還得到了一個名為“ load.php”的文件。 最后得到一個名為“ /folder/index2.php”的文件

index.php代碼: <?php include("load.php"); ?> <?php include("load.php"); ?>

index2.php代碼: <?php include("../load.php"); ?> <?php include("../load.php"); ?>

load.php代碼: <?php echo '<img src="image.png"/>'; ?> <?php echo '<img src="image.png"/>'; ?>

加載index.php時,該圖像將正確顯示。 當加載位於另一個文件夾中的index2.php但成功加載“ load.php”文件時,該映像表示找不到該映像,這很有意義,因為index2.php正在調用該映像,就好像它是在同一個文件夾中,不是。

那么,有什么辦法可以做到這一點? 我試圖避免使用完整的URL,但是如果這是我將使用的唯一方法。 我只是在尋找更好的選擇。

首先,嘗試使用文檔根目錄指定include文件: $_SERVER['DOCUMENT_ROOT'] ...這將始終定向到公共根文件夾,因此無論您在站點中的哪個位置,它都相同- 特別是當您開始包含本身include / require其他文件的文件時很有用 ……在這種情況下,包含腳本本身包含相對的子腳本( ../load.php | subfolder/load.php等)永遠無法從兩個工作文件夾層次結構中的不同級別。

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

然后, 對於在html中被調用的資源,也可以簡單地使它們全部相對於公共根目錄:

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

注意圖像src前面的/嗎? 無論當前顯示的頁面位於哪個文件夾中,都將始終調用該圖像。

或者,您可以完全指定資源(盡管這不太理想,因為站點域更改會破壞資源鏈接):

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

無論哪種方式,無論您從哪個腳本調用include,它都將始終從正確的位置抓取它(無需在include調用中添加../等),並且image / scripts / css / etc都可以工作他們被拉到什么頁面

如上所述, $_SERVER['DOCUMENT_ROOT']指示include中的當前公共根目錄。

圖像源可以以斜杠: <img src="/image.png">以告訴瀏覽器查看域根。 提及的src將告訴瀏覽器檢查www.example.com/image.png(如果放在www.example.com下的任何文檔中或其任何子目錄中)。

編輯:Ben的編輯速度更快

我建議做一個config.php

使用完整路徑的變量,例如$imgPath = 'www.host.com/path/images/'; path/ $imgPath = 'www.host.com/path/images/';

在每個頁面的開頭都包含它,

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

現在,當您包含load.php時,您將沒有錯誤:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM