2012-06-07 128 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

是的,這是真的,所以如果你想獲得站點根文件夾,你還必須知道腳本所在的文件夾相對於站點根。 –

相關問題