2013-07-13 184 views
0

虽然这已经被问了一千次,我仍设法搞砸,而不是找到负责我的问题的答案..PHP包含路径问题

我有2个文件

C:\xampp\htdocs\MF\Pages\ads.php 
C:\xampp\htdocs\MF\Pages\ads_view.php 

我想包括ads_viewads我做的是

echo __DIR__; 
var_dump(file_exists('ads_view.php')); 

和我所得到的是

C:\xampp\htdocs\MF\Pages 
bool(false) 

为什么我不能包含这个文件,当__DIR__明确说明我在父文件夹? ads.php也包含在其他文件中,如果这有什么区别?

回答

1

请把完整路径,它应该工作

var_dump(file_exists('C:\xampp\htdocs\MF\Pages\ads_view.php')); 

看到documentation为file_exists

1

您也可以使用DOCUMENT_ROOT变量$ _ SERVER的便携性。

var_dump(file_exists($_SERVER['DOCUMENT_ROOT'] . '\MF\Pages\ads_view.php'));

include $_SERVER['DOCUMENT_ROOT'] . '\MF\Pages\ads_view.php';

+0

它实际上是奇怪,因为'include'工作得很好,相对路径,但'file_exists'不>。< –

+0

那是因为,像梅达说,fil_exists期望文件的完整路径,而include也适用于当前目录和相对路径(如../../等)。但我喜欢使用document_root,所以我可以将代码复制到其他目录中的其他文件而不更改路径。一个“C:\路径...”等工作,但如果我复制到另一个网站的代码将停止工作。 – Rik

+0

您可以简单地使用'__DIR__'而不是文档根目录 –