【问题标题】:PHP file_exists elsePHP file_exists else
【发布时间】:2016-04-29 16:36:30
【问题描述】:

当我习惯跟随 PHP 代码时;

<?php if (file_exists("/foto/Maurice.jpg"))
{
echo "<center><img src='/foto/Maurice.jpg'/></center>";
}
else {
echo "<center><img src='/afbeeldingen/kaars1.png'/></center>"; 
?>

我的浏览器总是显示kaars1.png 而不是Maurice.jpg 我也尝试了!file_exists,但是当Maurice.jpg 不存在时,它不显示kaars1.png。 有没有简单的方法来解决这个问题?

【问题讨论】:

  • file_exists 适用于服务器(本地)文件系统上的文件。
  • file_exist 中提供完整的网址。(您的图片所在的完整路径)
  • 只是为了询问,您确定该文件确实存在并且可以通过php访问吗?
  • 您正在测试的这个文件是否位于您的服务器上?

标签: php image


【解决方案1】:

这是你第二个问题的答案

正确的解决方案取决于您的实际目录结构和脚本文件相对于您要查找的实际文件夹和文件的位置,但要开始找到解决方案,请在 "/foto/Maurice.jpg" 中的 / 说回到根目录并查找名为/foto的目录

因此,如果此文件夹在您的 DocumentRoot 下,请尝试使用

if (file_exists("foto/Maurice.jpg"))

【讨论】:

    【解决方案2】:

    file_exists 仅适用于服务器(本地)文件系统上的文件。您需要实际尝试请求该 URL 并查看它是否存在。

    您可以使用 cURL 来执行此操作。

    $handle = curl_init('https://picathartes.com/foto/Maurice.jpg');
    curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($handle, CURLOPT_NOBODY, TRUE);
    $response = curl_exec($handle);
    
    // Check for 404 (file not found).
    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    if($httpCode == 404) {
        echo "<center><img src='https://picathartes.com/afbeeldingen/kaars1.png'/></center>"; 
    }   
    else{
        echo "<center><img src='https://picathartes.com/foto/Maurice.jpg'/></center>";
    } 
    curl_close($handle);
    

    (来自这个问题的代码:https://stackoverflow.com/a/408416

    【讨论】:

    • 最好不包含响应的实际正文(curl_setopt($handle, CURLOPT_NOBODY, 1)
    • @georaldc:可能。我大多只是从另一个问题中“借用”了代码。只获取没有正文的标题似乎是个好主意。
    • 这是一个不错的答案,但是是什么让您认为正在查找的文件在另一台服务器上?
    • @RiggsFolly OP 改变了问题:stackoverflow.com/posts/34957526/revisions
    猜你喜欢
    • 2016-01-23
    • 2011-10-04
    • 2012-09-17
    • 2013-08-21
    • 2010-10-22
    • 2012-09-02
    • 2017-05-14
    • 2017-03-11
    • 2011-09-03
    相关资源
    最近更新 更多