为什么file_exists()返回false?

时间:2016-05-07 08:10:03

标签: php wordpress file-exists

我正在尝试使用if (file_exists()检索WP帖子的图像,这些图片保存在wp-uploads目录中,但它无法识别文件路径。

每篇文章最多可提供8张图片。每个图像在文件名末尾都有字母a-g(或者没有),并且str_replace用于替换文件名中的某些字符。

我需要显示每个图像是否存在,如果不存在,则不显示任何内容。因此,如果帖子与最后的b,d和f的图像相关联,则只显示这三个。

我已经在没有(file_exists())的情况下进行了测试,并且能够为每个图像添加一个简单的回声 - 但似乎$img路径无法被识别。

我有点像一个PHP菜鸟所以任何帮助将不胜感激...

$uid = get_post_meta (get_the_ID(), 'Unique number', true);
$root ="/wp-content/uploads/2016/Collection/";
$path = str_replace(" ","_",$uid);
$path = str_replace(".","_",$path);
$path = str_replace(":","",$path);

$img = $root.$path.".jpg";
$imga = $root.$path."a.jpg";
$imgb = $root.$path."b.jpg";
$imgc = $root.$path."c.jpg";
$imgd = $root.$path."d.jpg";
$imge = $root.$path."e.jpg";
$imgf = $root.$path."f.jpg";
$imgg = $root.$path."g.jpg";

if (file_exists($img)) { echo "<img src='".$root.$path.".jpg' />"; } else { echo ""; }
if (file_exists($imga)) { echo "<img src='".$root.$path.".jpg' />"; } else { echo ""; }
if (file_exists($imgb)) { echo "<img src='".$root.$path."b.jpg' />"; } else { echo ""; }
if (file_exists($imgc)) { echo "<img src='".$root.$path."c.jpg' />"; } else { echo ""; }
if (file_exists($imgd)) { echo "<img src='".$root.$path."d.jpg' />"; } else { echo ""; }
if (file_exists($imge)) { echo "<img src='".$root.$path."e.jpg' />"; } else { echo ""; }
if (file_exists($imgf)) { echo "<img src='".$root.$path."f.jpg' />"; } else { echo ""; }
if (file_exists($imgg)) { echo "<img src='".$root.$path."g.jpg' />"; } else { echo ""; }`

3 个答案:

答案 0 :(得分:1)

您使用$root启动/,因此它从服务器的根目录开始。删除第一个/并重试。

答案 1 :(得分:1)

您需要重新排列告诉PHP查找地址的方式,

select可能不是你的绝对文件路径根(可能意味着绝对)所以请使用特殊的超级变量,$_SERVER['DOCUMENT_ROOT']这是网络的根源可访问的文件路径,因此您有:

$root

这是检查文件是否存在的文件结构要在$img = $_SERVER['DOCUMENT_ROOT'].$root.path.".jpg" //while retaining your current / at the start of $root 标记中引用的文件结构,这似乎是正确的你上面的例子。

因此,您的整体修正应如下所示:

<img>

另外需要注意的是,此函数的结果是缓存的,因此您应该在此文件的开头调用clearstatcache(),以便它可以对图像是否存在进行新的检查。目前没有这个,即使图像确实存在,PHP将使用缓存 - 过去 - 结果可能不是最新的。

答案 2 :(得分:0)

cars = $scope.cars; //this should return [1, 2]

获取基本目录。

$uid = get_post_meta (get_the_ID(), 'Unique number', true);
$path = str_replace(" ","_",$uid);
$path = str_replace(".","_",$path);
$path = str_replace(":","",$path);

$uploads = wp_upload_dir();