2011-07-23 43 views
1

我使用file_exists()中的一类,我想用它的根,以及包含在另一个文件夹时,看文件是否存在的。PHP直接路径file_exists()

我目前有:

if (file_exists("./photos/".$this->id.".jpg")){ 

// 

} 

它可以包含在根的时候,但不包括(阿贾克斯)的文件夹中时。

我能做些什么,使之直接(我认为是正确的话)?由于该函数的性质,我无法将我的网站URL加入其中。

+0

我有这样的结构:/classes/class.php和/照片 – Jake

回答

2

最简单的方法是使用绝对(满)路径:

if (file_exists("/full/path/to/photos/".$this->id.".jpg")){ 
    // 
} 

这样一来,无论从那里执行脚本此事,完整的路径,永远不会改变,将永远工作。

当然,你可能不希望硬编码的完整路径到PHP脚本...


所以,你可以使用dirname(__FILE__)去其中包含该文件的目录的完整路径其中你写了dirname(__FILE__),并从那里,与相关的一个去。

例如:

$path = dirname(__FILE__) . '/../../files/photos/'.$this->id.".jpg"; 
if (file_exists($path)) { 
    // 
} 

(同时测试这一点,你可能想显示的$path的价值,首先,要确保你有正确的路径)


注意:如果您使用PHP> = 5.3,则可以使用__DIR__而不是dirname(__FILE__)


相关的手册页:

0

这听起来像你只需要从根目录到代码的完整路径。

if (file_exists("/root_dir/path/to/photos/".$this->id.".jpg")) 
+0

我如何找到这条道路由于 – Jake

+0

通过ssh或ftp,遍历只需登录到您的服务器?到webroot,这就是你的路径应该开始的地方,所以如果你的webroot是“public_html”(大多数主机通用),你的路径将以/开头,指示您从根目录开始。所以这将是/ public_html/another_directory/etc/photos/ –

0

这是多个,或者使用dirname(__FILE__)拿到php文件本身的路径,无论它是否会被直接调用或包括不常见的。因此,在你的情况,你可以写:

if(file_exists(dirname(__FILE__) . '/photos/'.$this->id.'.jpg')) 
+0

这不起作用 – Jake

0

在包含代码的类的同一水平假设 “照片” 文件夹中:

if (file_exists(dirname(__FILE__)."/../photos/".$this->id.".jpg")){ 

// 

} 
+0

我有这样的结构:/classes/class.php和/ photos – Jake

+0

我已经根据您的信息更新了代码。 –

0

目录名(FILE )=” ../ “

目录名(目录名(FILE ))=” ../../ “

目录名(目录名(目录名(FILE )))=” ../../ .. 。/”

U可以试试它的