localhost上的dirname(__ FILE__)

时间:2012-02-18 01:35:06

标签: php constants wamp

我正在使用WAMP并在www目录中有一个开发站点。我想使用dirname(__FILE__)来定义服务器根目录的路径。

目前我正在使用包含以下内容的配置文件:

define('PATH', dirname(__FILE__));

我将配置文件包含在我的header.php文件中,如下所示:

<?php require_once("config.php") ?>

然后,在我的子页面上,我使用常量PATH来定义路径,包括header.php

<?php require_once("../inc/header.php"); ?> 

然而,我的链接是这样的:

<link rel="stylesheet" href="C:\wamp\www/css/style.css" />

我需要做些什么来解决这个问题?由于我在header.php文件中包含我的常量,因此我无法访问初始require_once("../inc/header.php");中的常量。我可以使用哪种其他方法来查找header.php的根?

3 个答案:

答案 0 :(得分:8)

看起来你只需要

define('PATH', $_SERVER['SERVER_NAME']);

如果你想成为超级技术人员,你可以做这样的事情。

define('PATH', str_replace($_SERVER['DOCUMENT_ROOT'], $_SERVER['SERVER_NAME'] . '/', dirname(__FILE__)));

另一方面,,更重要的是,您实际上并不需要它们。这将有效。

<link rel="stylesheet" href="/css/style.css" />

当href以目录分隔符开头时,它被认为是相对于文档根目录而不是当前工作目录。

答案 1 :(得分:1)

__FILE__是文件系统路径,而不是URL路径。我想你可能会对你需要的东西感到困惑。要包含php文件或移动文件,你需要使用文件系统路径。要创建资源的URL,您需要使用URL。

对于文件系统内容,您可以使用dirname(__FILE__)。因此,如果您没有使用前端控制器模式,那么在前端控制器或顶级入口点中,您可能会遇到以下情况:

define('ROOT_PATH', dirname(__FILE__));
define('INC_PATH', ROOT_PATH . DIRECTORY_SEPARATOR . 'includes');

至于asstes go(css,images,js)我喜欢将它们保存在DOCUMENT_ROOT的单个位置,因此无论您在文件结构中的哪个位置,路径始终为/css/path/to/file.css 。如果您在本地计算机或测试服务器上的子文件夹中进行开发,这可能会出现问题,但使用虚拟主机可以轻松避免这种情况,以便每个站点都有自己的文件结构与其他站点完全分开。

答案 2 :(得分:0)

$server = str_replace('\\','/',$_SERVER['SERVER_NAME']);
$server = (substr($server,-1)=='/'?substr($server,0,strlen($server)-1):$server);
!defined('PATH')?define('PATH', 'http://'.str_replace($_SERVER['DOCUMENT_ROOT'],$server , str_replace('\\','/',dirname(__FILE__)))):'';