我有一个HTML代码,它运行良好:
<link href="/mywebsite/styles.css" rel="stylesheet" type="text/css"/>
然而,这段 PHP 代码却不能:
require('/mywebsite/db.php');
db.php和styles.css都在同一个目录中。我可以使用:
require(dirname(__DIR__) . '/db.php');
但看起来有点丑陋。我错过了一些明显的东西吗?
我有什么遗漏的吗?
是的。:)
require('/mywebsite/db.php');
/
是系统根目录(如果你使用Windows,则为C:\
)。它与您的网站托管的URL无关,而与运行网站的系统有关。我猜您的网站保存在类似/users/aygosis/webroot/index.php
的地方。在您的系统上可能不存在/mywebsite/db.php
。
require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'db.php'
这实际上是一个不错的做法。你还可以在一个随处可用的文件中建立一个基础,并让所有包含引用它为相对路径:
define('ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
...
require ROOT . 'db.php';
这里的常见方法是定义一些与文件系统相关的常量,然后使用它们,例如在我自己编写的MVC框架中,我定义了以下内容:
if (!defined('DS')) {
/**
* Shorter Directory Separator Constant
*/
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT')) {
/**
* Application Directory path Constant
*/
define('ROOT', dirname(dirname(__FILE__)));
}
我会像这样引用文件:
require ROOT . DS . 'System' . DS . 'Library' . DS . 'compatibility.php';