[英]PHP Path to Include Files
我有一個帶有index.php的網站。 index.php有許多包含文件,例如
<?php include_once('scripts/php/index_mainImageJoin.php');?>
我從根目錄創建了一個名為“ extrapages”的新文件夾,並將在其中具有包含與該站點有關的信息的頁面。 我已經像上面一樣添加了include_once文件,並更改了路徑,這些都很好。
我發現的問題是包含文件中的路徑失敗。 例如:如果圖像或其他包含文件在包含文件中,則從“ extrapages”文件夾運行時,它將失敗。 路徑問題。
有解決這個問題的好方法嗎? 是否可以將“擴展名”下頁面的站點根目錄(www)的路徑更改/設置為一個文件夾?
我可以將這些頁面移到根目錄上,並且它們可以正常運行,但我真的不希望網站根目錄上的所有內容雜亂無章。
任何想法和想法
解決任何路徑問題的關鍵稱為絕對路徑
在為您的網站(包括圖像源)創建超鏈接時 ,請始終從/
后面加上完整的正確路徑啟動它。 它永遠不會讓你失望。
與文件系統調用相同:始終使用絕對路徑。 您的服務器通常為您提供一個非常方便的變量,稱為$_SERVER['DOCUMENT_ROOT']
該變量包含文件系統與Web服務器的連接點,指向您的Web根目錄。
因此,當您從網站上的任何地方致電時,
include $_SERVER['DOCUMENT_ROOT'].'/scripts/php/index_mainImageJoin.php';
將始終指向同一位置
只需使用set_include_path()
將包含路徑添加一次(在開頭的某個位置或在配置文件中set_include_path()
,請參閱手冊 。 使用絕對路徑(不是相對路徑;可以使用dirname(__FILE__)
),它應該一直工作。
如果您使用的是PHP 5.3.0或更高版本,則可以(而不是__DIR__
建議)使用__DIR__
(新定義的魔術常數)。
例:
include __DIR__ . '/../include.php';
現在,當您要避免使用../
並映射包含項時,這無濟於事。 不過,還有一種更好的方法-在所有前端文件(應該是用戶只能訪問的PHP文件)中,定義一個常量,該常量提供腳本(而不是當前文件)的根路徑。
例如:
index.php
<?php
define('MYSCRIPT_ROOT', dirname(__FILE__));
// or in php 5.3+ ...
define('MYSCRIPT_ROOT', __DIR__);
// ... do some stuff here
include MYSCRIPT_ROOT . '/includes/myinclude.php';
現在,我們要在includes目錄中包含一個文件。
讓我們在includes/myinclude.php
,並包含include includes/myotherinclude.php
文件。
includes/myinclude.php
<?php
if(!defined('MYSCRIPT_ROOT')) exit; // prevent direct access - ALWAYS a good idea.
// ... do stuff here or something
include MYSCRIPT_ROOT . '/includes/myotherinclude.php';
請記住,包含路徑應直接相對於項目本身的根目錄,而不僅僅是相對於前端文件之一。 如果子目錄中有一個前端文件,則在定義常量時需要回退到項目根目錄本身。
例:
subdirectory/index.php
index.php
<?php
define('MYSCRIPT_ROOT', dirname(dirname(__FILE__)));
// or in php 5.3+ ...
define('MYSCRIPT_ROOT', dirname(__DIR__));
// ... do some stuff here
include MYSCRIPT_ROOT . '/includes/myinclude.php';
我們在這里所做的只是添加一個dirname()調用,該調用將刪除路徑中的目錄。 請參閱: http : //us.php.net/manual/en/function.dirname.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.