![](/img/trans.png)
[英]cannot get include(dirname(__FILE__) . “/dir/file.php”); to work
[英]PHP dir/file hierarchy with “include” and (dirname(__FILE__) . 'SOMETHING')
感謝您的時間和精力。
我正在使用一個php站點,在該站點中我想集成在網上找到的留言簿,該留言簿無需mySql數據庫即可工作。
我的網站的結構如下:
host.../myDir/fileA.php (here we have all the basic files of the site)
我要集成的留言簿第一個文件位於:
host.../myDir/gbook/gbook.php
在gbook目錄下,還有一個稱為模板的目錄,其中包含圖形所需的所有內容(顯而易見)。
在fileA.php里面,我插入了這個include命令:
require_once "gbook/gbook.php";
在gbook / gbook.php中,有以下命令:
$settings['tpl_path'] = './templates/'.$settings['template'].'/';
現在,我已經閱讀了(include(dirname( FILE )。'...')的php指南,並且我還閱讀了您對該命令的多種解釋,因此,我對此進行了測試:
$settingsBase['tpl_basepath'] = (dirname(__FILE__) . '/');
$settings['tpl_path'] = $settingsBase['tpl_basepath'].'templates/'.$settings['template'].'/';
但是適用於集成,但不適用於圖形。 所以這是我不了解的,也是我了解的。
當您將文件“包含”在另一個文件中時,編譯器將讀取該代碼,因為它是同一文件的一部分。 那就是問題所在。 當您包含位於另一個/ dir中的內容時,編譯器將獲取文件,而不是整個結構,因此,如果包含文件中包含另一個“ include”,則編譯器將在includer文件所在的/ dir中查找它。 正確?
那么存在dirname()命令對嗎? 我的意思是使用dirname()告訴編譯器我要包含此文件/dir/file.php是正確的,隨后將出現的所有內容以及包含在第一個文件中的所有內容都應保持相同的/ dir結構?
因此,如果有此結構:
host.../myDir/fileA.php
該文件包含命令:
include gbook/fileB.php
該文件包含命令:
include /template/all_the_other_files.php
完整的結構是:
(1) host...
(2) /myDir (where_there's_site)
(3) /gbook (where_there's_base_gbook_structure)
(4) /template (where_there's_template)
(5) /others dir (where_there's_pics_smiles_etc...)
我該如何告訴編譯器“嘿,當您包含gbook / gbook.php時”,所有內容都必須包含在gbook.php中,該主機必須位於主機... / myDir / gbook / ...中?
我知道這可能對您來說真的很簡單,但是我正在努力解決該問題,並且我不了解該問題的基本解決方案和解釋。
謝謝。
首先,我建議使用require_once代替include 。 如果找不到所需的文件,並且您不需要關心多個包含文件,則會引發錯誤。
我認為您只需要在gbook / fileB.php中使用它:
require_once __DIR__ . /template/all_the_other_files.php;
如您所見,可以在較新的PHP版本中使用DIR magic常量而不是dirname(FILE)。 使用它,您可以很容易地實現相對路徑的包含。 希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.