【问题标题】:Server Not Showing Images服务器不显示图像
【发布时间】:2014-01-16 01:47:56
【问题描述】:

我有一张图片,比如说http://localhost/myapp/uploads/image.jpg

我有一个脚本可以拉出这张图片以显示在主页上,如下所示:

<img src="<? echo base_url().'uploads/.$filename ; ?>

最终会输出以下 HTML:

<img src="http://localhost/myapp/uploads/image.jpg">

现在,当我在 Windows 资源管理器中访问该文件夹时,我可以清楚地看到那里的图像。

但是,当尝试使用上面指定的链接显示它时 - 它会抛出 404。

一些事情:

  1. 我的base_url() 设置正确。
  2. apache 错误日志未显示该操作。
  3. 但是,Apache 访问日志显示以下内容:"GET /myapp/uploads/image.jpg HTTP/1.1 " 404 1175

我对这里到底出了什么问题感到困惑。

【问题讨论】:

  • 这是正确的:&lt;img src="&lt;? echo base_url().'uploads/.$filename ; ?&gt;>再看一遍。
  • 对包含您的图像的文件夹的权限是否适当?尝试chmod 755。
  • 故障排除步骤一:如果手动输入url,是否有效?
  • 如果我手动输入它就不起作用。

标签: php image apache


【解决方案1】:

应该是'uploads/'

  <img src="<? echo base_url().'uploads/'.$filename ; ?>

而不是

 <img src="<? echo base_url().'uploads/.$filename ; ?>

【讨论】:

  • 谢谢,但没有雪茄。可能与服务器有关?
  • 如果您使用图像服务器,请确保它采用服务器域路径而不是 localhost
  • 这是一个开发项目...尚未上传
  • 复制图片src url到浏览器窗口,查看图片在位置的可用性
  • 如果指定位置没有图片,则浏览器显示为损坏图片
【解决方案2】:

您的 &lt;img&gt; 标签似乎不正确:

<img src="<? echo base_url().'uploads/.$filename ; ?>

不应该是:

<img src="<? echo base_url() . 'uploads/' . $filename ; ?>" />

为了避免您再次因此类问题而发疯,我强烈建议您避免使用这样的模板代码格式,而是这样做:

$img_url = base_url() . 'uploads/' . $filename ;
echo "<img src=" . $img_url . " />";

我个人认为,将内联 PHP 代码与 HTML 混合使用是一个巨大的调试难题,应该不惜一切代价避免。

编辑 另外,当您尝试直接通过浏览器加载它时会发生什么?或者就此而言,当您在命令行/终端中时,使用时得到的响应是什么:

curl -I http://localhost/myapp/uploads/image.jpg

这应该返回图像的完整标题,如果图像检索成功,则返回 200;如果图像未加载,则返回 404

最重要的是,当你说:

Now, when I access the folder in windows explorer, I can clearly see the image there.

你的意思是仅仅浏览文件系统?您需要通过浏览器获取完整的 URL。也许您的图像有一些大写/小写问题?或者甚至可能是文件名开头或结尾的杂散空格?但总的来说,这是一个相当简单的调试问题。

【讨论】:

  • 我会告诉你小费 - 但不确定这是否是灵魂......仍然不起作用。
  • 我也这么认为,但它就是行不通。我尝试了一切-folddr 权限,没有php,只有html,重新启动服务器-我在cmd 提示符和windows powershell 中都尝试了curl,但curl 甚至不起作用......我真的卡在这里了。由于某些奇怪的原因,这些图像不会显示......
【解决方案3】:

您在末尾缺少右引号和括号," /&gt;

不是'uploads/.$filename 应该是'uploads/'.$filename

<img src="<? echo base_url().'uploads/'.$filename ; ?>"/>

【讨论】:

    【解决方案4】:

    所以 - 灵魂证明比我想象的要简单。

    我打开了我的 .htaccess 文件(取消了 index.php 的使用)并进行了更改:

    RewriteEngine On
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
    

    收件人:

    RewriteEngine On
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    Options -Indexes
    

    这解决了问题。

    显然,我使用了 .htaccess 来阻止显示图像....如果有人能准确解释这几行代码的作用 - 我将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多