PHP中的文件_exists()和文件路径
我在根文件夹中有一个文件夹PHP中的文件_exists()和文件路径,php,Php,我在根文件夹中有一个文件夹uploads。根目录中还有另一个文件夹A,其中包含一个PHP文件。我在PHP文件中有以下代码: $imgpath = '/uploads/' . $filename; echo '<img src="' . $imgpath . '" />'; echo (file_exists($imgpath))?'true':'false'; $imgpath='/uploads/'$文件名; 回声'; echo(文件_存在($imgpath))?'true':'
uploads
。根目录中还有另一个文件夹A
,其中包含一个PHP文件。我在PHP文件中有以下代码:
$imgpath = '/uploads/' . $filename;
echo '<img src="' . $imgpath . '" />';
echo (file_exists($imgpath))?'true':'false';
$imgpath='/uploads/'$文件名;
回声';
echo(文件_存在($imgpath))?'true':'false';
它将显示图像,因此文件存在,但file\u存在
显示false
如果我将'/uploads/'
更改为'../uploads/'
,它将显示图像,并且文件存在
显示真
。即使没有图像,file\u存在
始终显示true
有什么问题
*更新*
我尝试了echo dirname(_文件__)代码>。它显示/…/A
,上传
文件夹位于/…/uploads
。此外,我在文件夹/…/m/A
中还有另一个类似的PHP文件。所以我需要某种通用路径。如何获取根路径,即,/../
我还尝试了$\u SERVER['DOCUMENT\u ROOT']
,但图像无法显示,尽管路径100%正确。原因是HTML中的绝对路径相对于网站根,而PHP中的绝对路径相对于文件系统根。它们不一样
我的网站根目录是,但我的网站是在/var/www/
的文件系统上开发的,因此如果我在/var/www/index.php
中,并使用路径/uploads/
,在html中,如果没有/uploads/
的文件系统,它将是。我甚至不在我的网站目录了 为了避免出现问题,最简单的方法是对文件_exists()使用绝对路径。系统根目录/
与您的web根目录不同(例如,)/var/www
试一试
#/var/www/A/script.php
$imgpath='/uploads/'$文件名;
#签入/var/www/uploads/filename
如果(文件_存在(目录名(_文件__)。'/...$imgpath)){
回声';
}
PHP>=5.3的编辑
$path = "/uploads/${filename}";
if (file_exists(sprinf("%s/..%s", __DIR__, $path)) {
echo "<img src=\"{$path}\">;
}
$path=“/uploads/${filename}”;
如果(文件\u存在(sprinf(“%s/.%s”,\uuuu DIR\uuuu,$path)){
回声”;
}
以“/”开头表示web上的相对路径,但在引用根“/”目录中“上载”文件夹的文件系统上
尝试/uploads
表示法或使用dirname(\uuuu FILE\uuuu)
这是有效的。但即使没有这样的文件,FILE\u存在
也会显示true
。为什么?
$path = "/uploads/${filename}";
if (file_exists(sprinf("%s/..%s", __DIR__, $path)) {
echo "<img src=\"{$path}\">;
}