2017-02-20 47 views
0

我有200个站点,我支持,他们都使用:如何使用相对路径和目录在PHP

<?php 
Include ("/_include/config.php"); 
?> 

但打有此包括页面的时候都示数出来。我需要做些什么来解决它?

我认为这是因为它的相对路径和目录所在,我明白了,我只是不知道如何快速修复它。

的Windows 2008 R2 IIS 7.5 PHP 7

谢谢

+0

了解命名空间,因为这是处理这个 –

+1

使用的最佳方法'回声GETCWD();'打印当前的工作目录。这是路径相对于的目录。确保配置文件存在 – Atan

回答

0

要包含其他相对于当前脚本的路径脚本,通常的解决办法是将__FILE__幻常量与dirname结合功能如下所示:

include dirname(__FILE__).'/_include/config.php'; 

您还可以使用'..'或嵌套调用dirname遍历父可怕ctories:

include dirname(dirname(__FILE__)).'/_include/config.php'; 
// is equivalent to: 
include dirname(__FILE__).'/../_include/config.php'; 
+0

我同意更改所有新站点的默认值,但我需要为现有的200找出它。它是iis问题还是它是ini问题? inlcusion(include_path ='c:\ php \ pear')错误导致我无法打开config.php文件。 –

+0

如果内存正确地为我服务,我相信用正斜杠启动路径将引用Windows上文件系统的根目录。所以'include'/ _include/config.php''会引用'C:\ _include \ config.php'。我可以想到一个可以避免修改任何代码的解决方案就是创建一个[junction](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006(v = vs.85))。 aspx)从'C:\ _ include'移动到'_include'目录实际存在的位置(假设'_include'是在所有站点共享的单个目录)。 – Gondrup

+0

在PHP 5.6和PHP 7中会发生什么变化?随着PHP 5.6它仍然有效,但升级到7它不再有效。 –

0

使用getcwd()函数。这总是返回当前调用(未包含)文件的目录路径(exp。C:\ xampp \ htdocs)。相对于您可以编辑包括:

include getcwd() . "\include\config.php"; /* C:\xampp\htdocs\include\config.php */