2017-08-07 62 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了解更多信息。

相关问题