如果 file_exists() 不工作

Posted

技术标签:

【中文标题】如果 file_exists() 不工作【英文标题】:if file_exists() not working 【发布时间】:2014-05-15 09:42:19 【问题描述】:

有人知道为什么这个脚本不起作用吗?

$imgname = get_stylesheet_directory_uri().'/images/headers/'.str_replace(' ', '', strtolower(get_the_title())).'.jpg';
            if (file_exists($imgname)) 
                echo '<img src="'.$imgname.'"> </img>';
             else 
                echo '<img src="'.get_stylesheet_directory_uri().'/images/headers/default.jpg"> </img>';
                

它总是返回 default.jpg,即使文件存在 我检查了$imgname,没问题

【问题讨论】:

这种编程语言是 php 吗? 请告诉我们 $imgname 包含的确切内容。 【参考方案1】:

您可能必须在此处区分 URL 和文件路径。

当您将浏览器定向到类似图像时

http://www.example.com/path/to/image.jpg

它可以工作,那么file_exists() 函数仍然会为此 URL 返回 false,因为它不是图像路径。

正确的路径应该是这样的

/var/www/htdocs/path/to/image.jpg

在本地文件系统上。然后file_exists() 将为此路径返回 true。

您需要使用file_exists() 测试的是图像的本地路径。如果存在,则需要包含图像的 URL。您正确地进行了 URL 包含,但没有正确地使用路径。

【讨论】:

【参考方案2】:

是的,你是对的,我必须这样使用:

$imgpath = get_stylesheet_directory().'/images/headers/'.str_replace(' ', '', strtolower(get_the_title())).'.jpg';
$imguri = get_stylesheet_directory_uri().'/images/headers/'.str_replace(' ', '', strtolower(get_the_title())).'.jpg';
            if (file_exists($imgpath)) 
                echo '<img src="'.$imguri.'"> </img>';
             else 
                echo '<img src="'.get_stylesheet_directory_uri().'/images/headers/default.jpg"> </img>';
                
            ?> 

【讨论】:

啊,这里的区别是_uri,加在get_stylesheet_directory()的末尾,所以变成了get_stylesheet_directory_uri()

以上是关于如果 file_exists() 不工作的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中的 file_exists 未按预期工作

PHP file_exists 方法未按预期工作

file_exists() 的 PHP 不区分大小写版本

将 file_exists 用于一系列文件名的简明方法

file_exists 和包含相对路径的路径(“/../”)

返回目录的问题