2017-08-17 64 views
1

好了,網站的結構很簡單:沒有這樣的文件或目錄(路徑誤差)

site.com

  1. 'config' 文件夾
    • 的config.php
    • 塞薩爾.php
  2. 'login'文件夾
    • 的index.php
  3. 的index.php

的config.php:

include_once '../config/cesar.php'; 

site.com/index.php

Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory 

site.com/login/index.php一切都OK。


如果我將刪除一個點(./config/cesar.php),主要指標將成爲確定和登錄頁面將得到錯誤。 如何使兩個代碼工作?

+0

取代像

../config/xxx.php 

你的路** ** ..意味着我們要返回到目錄中。既然** config.php和cesar.php **都在同一個文件夾中,不需要放** .. **,只需調用include_once'/config/cesar.php';** –

+0

@CamiloGo,用/config/cesar.php在登錄頁面上得到錯誤。 –

+0

** include_once'../config/cesar.php';**這是隻有'登錄'文件夾,因爲你正在訪問index.php和cesar.php是在另一個文件夾。它需要上去目錄找到它的文件夾。 –

回答

1

在路徑中..用於上去,因爲該文件將不存在,你正在尋找一個目錄。

如果你更新它爲include_once 'config/cesar.php';它應該工作,因爲這將允許它進入config目錄,而不是嘗試找到名稱爲config 1 level以上的index.php所在的目錄。因爲.

./作品是當前目錄下的符號。

要回答你的問題,就不可能有通過使用相對路徑,因爲這兩個文件是關於要包括一個服務器上的不同位置的代碼工作。如果你想要做某件事,那麼你將需要使用絕對路徑而不是相對路徑。這將是在Windows上的* nix的類似/path/to/webdirectory/site.com/path/to/file/config.php(即/home/charles/websites/site.com/config/config.php)和C:\path\to\webdirectory\site.com\path\to\file\config.php

在PHP中,你應該能夠通過使用$_SERVER['DOCUMENT_ROOT']變量獲得動態方式的絕對路徑。例如:include_once $_SERVER['DOCUMENT_ROOT'] . '/config/cesar.php';

+0

與config/cesar.php也得到登錄頁面上的錯誤 –

+0

@EdgarCooper對不起,我意識到你正在使用兩個文件中的相同代碼行。有可能,你只需要使用絕對路徑而不是相對路徑。 – Charles

+0

好吧,它不舒服,謝謝 –

-1

Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory

我遇到了類似的問題一次。你需要記住,(./config/xxx.php)(config/xxx.php)意味着同樣的事情,但(../config/xxx.php)將上升一個目錄,找到config文件夾和文件xxx.php它。

您還可以使用$base_url作爲所有路徑的前置字符串,以使其變得乾淨。其中:

$base_url = 'http://' . $_SERVER['SERVER_NAME']; 

然後用

$base_url.'/config/xxx.php' 
+0

這可能無處不在,'$ _SERVER ['DOCUMENT_ROOT']'是一種更安全的方法,因爲您不包含遠程文件。對於包含HTTP或FTP的內容,您必須在您的php.ini中啓用特定設置 - 請參閱http://php.net/manual/en/features.remote-files.php – Charles

相關問題