我正在使用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
的根?
答案 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__)))):'';