2017-08-07 31 views
0

我在本地機器上使用了XAMPP服務器。假設我的目錄結構如下指向PHP中父目錄的某個文件

-api/ 
    - products.php 
-includes/ 
    - settings.php 

因此,從如果我想包括settings.php文件products.php頁面,然後我在local machine使用include './includes/settings.php';,並能正常工作。但是當我將它移動到遠程服務器時,我必須使用include '../includes/settings.php';。差異是./../。爲什麼在本地和遠程服務器上有所不同,以及解決方案是什麼?

+0

這個相對路徑絕對不應該在你的本地機器上工作。我懷疑你錯過了一些東西。 – David

+0

它應該永遠是../所以你的設置有些不同 –

回答

0

避免任何問題嘗試使用DIR它會給你比較你當前文件存在的路徑,也嘗試使用include_once而不是include。

DIR:該文件的目錄。如果在包含內部使用,則返回包含文件的 目錄。這相當於 dirname(FILE)。除非目錄名是根目錄,否則此目錄名沒有尾部斜槓 。

include_once __DIR__.'/../includes/settings.php'; 
0

有可能是你之間的本地計算機和服務器如何看待目錄結構存在差異。解決這個問題的一種方法是使用名稱空間和「使用」語句。

在您的products.php類的頁面頂部創建一個名稱空間。喜歡的東西:

namespace YourProject\Api; 

use YourProject\Includes\Settings; 

而在你的settings.php類使用命名空間類似(您可能需要使用任何聲明。):

namespace YourProject\Includes; 

use YourProject\Api\Products; 

然後,您可以創建,您可能需要新的對象比如你設置類:

$products = new Products(); 

或者在你的產品類:

$settings = new Settings(); 

檢查Namespace and Importing from the PHP Docs瞭解更多信息。

相關問題