我正在開發一個PHP項目,並且在require_once中有一個文件路徑問題。PHP項目中的相對路徑
爲2個文件的文件夾結構是這樣的:
- 圖書館
例
- 當前頁
- HTML2PDF
- 文件,包括
在 「當前頁」 我有一個
require_once ('../HTML2PDF/html2pdf.class.php');
,但它給了我這個錯誤:
failed to open stream: No such file or directory in
我錯過了什麼?
我正在開發一個PHP項目,並且在require_once中有一個文件路徑問題。PHP項目中的相對路徑
爲2個文件的文件夾結構是這樣的:
- 圖書館
例
在 「當前頁」 我有一個
require_once ('../HTML2PDF/html2pdf.class.php');
,但它給了我這個錯誤:
failed to open stream: No such file or directory in
我錯過了什麼?
嘗試
require_once (__DIR__ . '/../HTML2PDF/html2pdf.class.php');
,因爲它會給你的絕對路徑當前文件
也許你的當前頁本身被另一個頁面調用(我們稱之爲第3頁)。
而在頁3中,找不到相對文件路徑../HTML2PDF/html2pdf.class.php
,因爲它是當前頁面的相對路徑。
您應該使用文件相對路徑:
require_once (__DIR__ . '/../HTML2PDF/html2pdf.class.php');
或
require_once (dirname(__FILE__) . '/../HTML2PDF/html2pdf.class.php');
你require
「荷蘭國際集團的文件,很顯然,包含一個類定義。 「管理」手動要求對於小型項目來說都很好,但隨着項目的增長,以及依賴於某些類在不同文件中可用的編寫代碼,您會發現自己處於一個正確的泡菜中。請使用自動加載器!
有一個很容易使用,而且方便的功能,對於這一點,太:spl_autoload_register
,the docs are quite easy to understand
您可以創建此自動加載機中的單個文件,說在你的項目的根,並定義一個常量,讓我們把它PROJECT_ROOT
:
define('PROJECT_ROOT', realpath(__DIR__).'/');
從那裏,你知道您的類,其目錄中查找在,什麼文件名的樣子。假設我有一個叫DB_Mapper
類,函數可能看起來像:
function myAutoloader($class)
{
$path = implode('/',explode('_', $class));
$path .= '.class.php';
if (file_exists($path)) require $path;
else throw new RuntimeException($class.' not found @'.$path);
}
但是,這只是一個簡單的例子...
您可以在配置文件中設置路徑。
if ($_SERVER['REMOTE_ADDR']=='127.0.0.1') { // If you are working in local server
define("PATH",$_SERVER['DOCUMENT_ROOT'].'/[Folder Name]/');
define("URL","http://".$_SERVER['SERVER_NAME'].'/[Folder Name]/');
}
else {
define("PATH",$_SERVER['DOCUMENT_ROOT'].'/');
define("URL","http://".str_replace('www.','',$_SERVER['SERVER_NAME']).'/');
}
and you can call
require_once (PATH.'HTML2PDF/html2pdf.class.php');
您可以在中央配置文件中定義全局應用程序根目錄。假設你的應用根目錄中有config.php
。然後做一個
define("APP_ROOT", dirname(__FILE__));
你仍然必須包括配置文件,你必須使用它的相對路徑,例如,
include ("../../../config.php");
但一旦你這樣做,你可以工作相對於腳本中的應用程序根目錄:
include (APP_ROOT."/b.php"); <-- Will always return the correct path
添加像require_once中文件的絕對路徑('無功/網絡/ HTML2PDF/HTML2PDF .class.php'); – Sundar
你也可以做類似'require_once(getcwd()。'/ ../HTML2PDF/html2pdf.class.php');'' – Cyclonecode