2

我正在开发一个 php 网站,我已经在我的个人计算机上安装了 wamp,我的网站文件位于 wamp 的 www 文件夹中。现在考虑 www 作为我的根文件夹,我在根文件夹中有一个模板文件夹,在模板文件夹中有 header.inc.html 文件。当我尝试使用绝对路径将此 header.inc.html 文件包含在任何其他 php 文件中时,include('/template/header.inc.html');它会给我错误“无法打开流:没有这样的文件或目录”,但是当我使用相同的绝对路径创建一个简单的 html 链接时路径它完美地工作并打开文件。下面是我的测试代码

<?php
echo '<a href="/template/header.inc.html">headerfile</a>';
include('/template/header.inc.html');
?>

例如,如果我将完整路径提供 C:/wamp/www/template/header.inc.html给 include 函数,它就可以正常工作。

我很困惑,这个问题只发生在我的 wamp 服务器上,它可以在任何虚拟主机服务器上完美运行,或者同样的问题可能会存在于虚拟主机上

我将不胜感激任何可以澄清我的困惑的帮助,谢谢。

4

3 回答 3

3

服务器上的绝对路径从服务器的硬盘 ( C:\) 开始。
客户端上的绝对路径从网站的根目录 ( http://example.com/) 开始。

于 2012-06-07T12:02:27.537 回答
2

您可以使用__DIR__相对于磁盘本身的 php 文件在磁​​盘上创建一些文件:

include(__DIR__.'/template/header.inc.html');

这应该可以解决您的问题。

区别并不容易解释,因为两种类型的路径——甚至是相关的——都是两双鞋。我建议您从一个非常基本的 HTML 网站教程开始,该教程解释了如何在您的网站上进行链接、文件的位置以及与网络服务器配置的关系。

于 2012-06-07T12:03:16.913 回答
1

HTML 页面存在于客户端的浏览器中,对服务器的文件夹结构一无所知,并且它们与域名有关,例如。http://example.com/

PHP 程序在服务器端运行,它们处理服务器文件夹。您不应该在 php 程序中对完整路径进行硬编码,因为无论何时在开发服务器和实时主机之间移动它们都会导致问题(仅举一个例子)。因此,在 php 文件中,您应该使用文件的相对路径,或者使用__DIR__替换为 php 文件所在目录的魔术常量。

1.) 第一种方法:include('template/header.inc.html');

2.)第二种方法:include(__DIR__ .'/template/header.inc.html');

在您的情况下(在开发机器上工作),客户端和服务器都是同一个盒子,这可能会让您感到困惑。

于 2012-06-07T12:11:24.197 回答