繁体   English   中英

PHP和文件路径中的file_exists()

[英]file_exists() in PHP and file path

我在根文件夹中uploads了一个文件夹。 根目录中还有另一个文件夹A ,它包含一个PHP文件。 我在PHP文件中有以下代码:

$imgpath = '/uploads/' . $filename;
echo '<img src="' . $imgpath . '" />';
echo (file_exists($imgpath))?'true':'false';

它将显示图像,因此文件存在,但file_exists显示为false

如果我将'/uploads/'更改为'../uploads/' ,它将显示图像, file_exists显示为true 即使没有图像, file_exists总是显示为true

问题是什么?

*更新*

我试过echo dirname(__FILE__); 它显示/....../A ,在uploads文件夹位于/....../uploads 此外,我在文件夹/....../m/A有另一个类似的PHP文件。 所以我需要某种普遍的道路。 如何获得根路径,即/....../

我也试过了$_SERVER['DOCUMENT_ROOT'] ,但是图片无法显示,尽管路径是100%正确的。

为避免出现问题,最简单的方法是使用file_exists()的绝对路径。 系统root /与您的Web根目录(例如) /var/www

尝试

# /var/www/A/script.php
$imgpath = '/uploads/' . $filename;

# check in /var/www/uploads/filename
if( file_exists(dirname(__FILE__) . '/..' . $imgpath) ) {
    echo '<img src="' . $imgpath . '" />';
}

编辑PHP> = 5.3

$path = "/uploads/${filename}";

if (file_exists(sprinf("%s/..%s", __DIR__, $path)) {
  echo "<img src=\"{$path}\">;
}

以“/”开头表示Web上的相对路径,但是在根目录“/”目录中引用文件夹“uploads”的文件系统上。

尝试./uploads表示法或使用dirname(__FILE__)

原因是HTML中的绝对路径与您的网站根目录相关,但在PHP中它与文件系统根目录相关。 她们不一样。

我的网站根目录是http://www.example.com/但我的网站是在/var/www/文件系统上开发的,如果我在/var/www/index.php并使用了路径/uploads/ ,在http://www.tmlample.com/uploads/的 html中,但对于/uploads/的文件系统。 我甚至不在我的网站目录中了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM