我目前正在嘗試將我的phpBB安裝整合到我正在構建的自定義CMS中。 phpBB在其許多功能中都依賴於一個名爲$phpbb_root_path
的變量,它在幕後(包括其他PHP等)以及創建前端超鏈接和圖像鏈接。絕對/相對路徑:PHP和HTML之間的根本差異
的phpBB的做法是包括以下代碼每個PHP文檔:
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forums/';
print_r(dirname(__FILE__));
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require_once($phpbb_root_path . 'common.' . $phpEx);
require_once($phpbb_root_path . 'includes/functions_display.' . $phpEx);
的$phpbb_root_path
變量然後根據相對於論壇文檔的位置改變。這是一種正常運行的方法,但是我希望通過require_once
代替單獨的.php文件中的代碼,以避免我的自定義模板系統出現問題,因此我不必將相同的代碼複製到每個文檔中我有。
症狀:上面的代碼,如果包含的話,將罰款只要包括文檔工作,我文檔根目錄(其中/論壇/是一個子目錄),但它總是會打破其他地方,或者如果與.htaccess url_rewrite
一起使用。
問題:它不可能簡單地定義爲$phpbb_root_path
「/論壇/」或「/〜(USERID)/論壇/」,這將是顯而易見的,簡單的解決方案。爲什麼?因爲HTML和PHP認爲是根(主要的斜槓)之間存在差異。
通過打印dirname(__FILE__)
我確定我的PHP安裝以/home/(USERID)/public_html/
爲根。但是,HTML(顯然)以root身份需要WWW.DOMAIN.COM。
正如你可以想像,這導致問題:
1)如果我定義$phpbb_root_path
爲/home/(USERID)/public_html/
,PHP的一部分(包括等)的工作,但打印HTML的任何功能將導致的screwups,像<img>
連接到(WWW.DOMAIN.COM)/home/(USERID)/public_html/(link to image)
。
2)如果我將$phpbb_root_path
定義爲/forums/
,頁面將不會顯示,因爲PHP將嘗試在與「/ home /」相同的級別上找到名爲「/ forums /」的目錄。
問:是否有一個簡單/巧妙的方式通過attuning PHP的根是/home/(USERID)/public_html/
刪除PHP/HTML根文件夾定義之間的這種差異,例如?或者我沒有任何選擇,只能在每個文檔中包含代碼,並根據文檔的位置使用相對路徑?
phpBB是非常不合時宜的。對於初學者來說,對於初學者來說,使用名稱空間和自動加載器以及適當的路由,只需要在站點索引中定義根目錄。 [例子](https://github.com/MartyWallace/Tempest/blob/master/index.php) – Marty