本地主机上的目录名(__FILE__)

发布于 2025-01-06 23:00:03 字数 737 浏览 0 评论 0原文

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

目前我正在使用一个配置文件,其中包含:

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

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

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

然后,在我的子页面上,我使用常量 PATH< /code> 通过包含 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 的根目录?

I'm using WAMP and have a development site in the www directory. I want to use dirname(__FILE__) to define the path to the server root.

Currently I'm using a config file which contains:

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

I'm including the config file in in my header.php file like this:

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

Then, on my sub pages I use the constant PATH to define the path by including header.php.

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

However, my links are coming out like this:

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

What do I need to do to fix this? And since I'm including my constant in the header.php file I don't have access to the constant in the initial require_once("../inc/header.php"); What other method can I use to find the root for header.php?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

叹梦 2025-01-13 23:00:03

看起来你只需要拥有

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 以目录分隔符开头时,它被视为相对于文档根目录,而不是当前工作目录。

It looks like you just need to have

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

If you want to be super technical, you can do something like this instead.

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

On a side note, and more importantly, you don't actually need them. This will work.

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

When a href begins with a directory separator, it is considered relative to the document root, not the current working directory.

花开半夏魅人心 2025-01-13 23:00:03

__FILE__ 是文件系统路径,而不是 URL 路径。我想您可能对自己需要哪个感到困惑。要包含 php 文件或移动内容,您需要使用文件系统路径。要创建资源的 URL,您需要使用该 URL。

对于文件系统,您可以使用dirname(__FILE__)。因此,在前端控制器或顶级入口点中,如果您不使用前端控制器模式,您可能会遇到类似这样的情况:

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

就资源(css、图像、js)而言,我喜欢将它们保留在 的单个位置中DOCUMENT_ROOT 因此,无论您位于文件结构中的哪个位置,路径始终为 /css/path/to/file.css。如果您在本地计算机或测试服务器上的子文件夹中进行开发,这可能是一个问题,但通过使用虚拟主机可以轻松避免这个问题,这样每个站点都有自己的文件结构,与其他站点完全分开。

__FILE__ is a filesystem path, not an URL path. I think you may be getting confused about which you need. To include php files or move things around, youll want to use the filesystem path. To create URLs to resources youll want to use the URL.

For filesystem stuff you can use what the dirname(__FILE__). So in your front controller or top level entry points if youre not using the front controller pattern you might have things like:

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

As far as asstes go (css, images, js) i like to keep these in a single location at the DOCUMENT_ROOT so the path is always /css/path/to/file.css regardless of where you are in the file structure. This can be a problem if you develop in subfolders on your local machine or testing server, but its easily avoided by using Virtual Hosts so that every site has its own file structure completely separate form others.

最佳男配角 2025-01-13 23:00:03
$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__)))):'';
$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__)))):'';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文