【问题标题】:check file exist with php isn't working, need help检查文件是否存在 php 不起作用,需要帮助
【发布时间】:2011-05-27 06:01:10
【问题描述】:

请告诉我,我的以下代码有什么问题:

<a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
<?php   
$logo2 = $_url.'/image/data/logo2.png';
$logo = $_url.'/image/data/logo.png';

if (file_exists($logo2))  { 
 echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
 } else {  
 echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
 } ?>
</a>

$logo2 和 $logo 的图片都在同一个目录下,但是代码只显示了 $logo (logo.png) 我需要指点并提前致谢

更新:

$_url 的值为

$this->data['_url'] = $this->config->get('config_url');

当我 &lt;?php echo $_url;?&gt; 时会显示例如http://www.mysite.com

使用上面的代码只显示 logo.png

【问题讨论】:

  • 您不是在检查 file 是否存在,而是在检查 URL 是否存在。
  • $_url 的值是多少?
  • 嗨,$_url 的值是mysite.com,在我最近更新后回显
  • 抱歉,该代码可能显示 logo.png。
  • 因为第一个条件错误

标签: php file exists


【解决方案1】:

您正在将file_exists() 应用到一个不起作用的 URL。

您需要将其应用到文件系统路径。

【讨论】:

    【解决方案2】:

    file_exists 需要 本地路径,而不是 url

    【讨论】:

      【解决方案3】:

      使用getimagesize() 因为file_exists 将返回false。

      <a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
      <?php   
      $logo2 = $_url.'/image/data/logo2.png';
      $logo = $_url.'/image/data/logo.png';
      
      if (getimagesize($logo2))  { 
          echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
       } else {  
          echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
       } ?>
      </a>
      

      【讨论】:

        【解决方案4】:

        file_exists 可用于 URL 包装器。

        在您的情况下,如果您确实需要执行 URL 包装检查(会很慢),请确保启用 URL 包装(默认启用)。

        另外,您的$_url = @987654321@,请注意额外的斜线可能会影响 Web 服务器重写。

        如果该文件与您的 Web 服务器位于同一台服务器上,您应该将 $_url 替换为 document_root(文件夹路径)。

        在功能方面,file_exists 也为目录返回 true。您应该将其替换为is_file

        【讨论】:

          【解决方案5】:

          与这里的一些答案相反,file_exists 可以将 URL 作为参数,它会检查它是否存在。但是,最好使用 file_exists 的文件系统路径而不是 URL。

          无论如何,立即想到两个原因:

          1. 两个文件是否具有相同的权限? (即,logo.png 可能具有必要的读取权限,而 logo2.png 可能没有)

          2. 文件名真的和脚本中的一样吗?例如,在您的开发平台上一切都可以正常工作 - Mac 或 Windows 会忽略文件名的字母大小写,但在文件名必须大小写相同的 Linux 服务器上则不然。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-12
            • 1970-01-01
            相关资源
            最近更新 更多