【问题标题】:if file_exists() not working如果 file_exists() 不工作
【发布时间】: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 包含的确切内容。

标签: php if-statement file-exists


【解决方案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()
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 2013-12-21
    • 2016-02-26
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2017-03-27
    相关资源
    最近更新 更多