2012-06-07 129 views
2

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

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

如果我给例如C:/wamp/www/template/header.inc.html到包括功能正常工作的完整路径。

我很困惑,这个问题只出现我WAMP的服务器上,这将很好地工作主机商的服务器上,或者也许同样的问题会存在于一个虚拟主机提供商

我将不胜感激,澄清任何帮助我混乱,谢谢。

+0

''/ template/header.inc.html''绝对路径不是绝对路径,如果你使用它将是'文件direcotry +'/ template/header.inc.html''。 – Leri

回答

3

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

1

您可以使用__DIR__使上相对磁盘某些文件到PHP文件在磁盘上本身:

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

这应该解决您的问题。

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

0

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

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

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

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

在你的情况(在开发机器上工作),同时在客户端和服务器是一样的盒子,这可能是混淆你。

+0

魔术常量'__DIR__'给出了脚本文件所在文件夹的路径,它不会给出根文件夹的路径,所以如果脚本文件保存在嵌套文件夹中并且我想要目标一个存在于根文件夹中的文件。 – Saifee

+0

是的,这是真的,所以如果你想获得站点根文件夹,你还必须知道脚本所在的文件夹相对于站点根。 –

相关问题