我在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');
但这看起来相当丑陋。我错过了一些明显的东西吗?
答案 0 :(得分:2)
我错过了一些明显的东西吗?
是。 :)
require('/mywebsite/db.php');
/
是系统根(C:\
,如果您是Windows用户)。它与您的站点所在的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';
答案 1 :(得分:1)
这里常用的方法是定义一些与文件系统相关的常量,然后使用它们,即在我的小本土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';
答案 2 :(得分:0)
在php.ini配置文件中,将网站文件的位置添加到include_path。这样,当您调用include()或require()
时,它将搜索该目录