【问题标题】:li cannot find image我找不到图片
【发布时间】:2012-01-12 10:49:21
【问题描述】:

我有一个带有 li 的 ul,在此处的代码中找不到与列表项“li”关联的 .PNG 图像:

$pngFilename= 'C:/xampp/htdocs/myProj/' . 'just_a.png';
echo 'pngFilename is "', $pngFilename, '" -- that was the .png image filename.';


// within a 'ul' is this li item that displays an image (the ul code is simplified 
// to only show the item that (needs to but doesn't!) display a .PNG image.)
echo '<ul>';
echo '<li>';
echo '<a href="http://localhost/myProj/just_an.htm">';
echo '<img src="', $pngFilename, '"';            
echo 'alt="http://localhost/myProj/the_other.png"';

// NOTE -- I left out the close /> to the img statement when I copied my code here but 
// it was in fact in my source code.
echo '/>'; 

echo '</a>';
echo '</li>';
echo '</ul>';

在我编写上面的 php 代码之前,我只测试了原始 html,它很好——我的 .PNG 文件名为 C:/xampp/htdocs/myProj/just_a.png 显示正确。

但是当我切换到 html 的 php 服务器端生成时,C:/xampp/htdocs/myProj/just_a.png 图像没有出现,只有“找不到它”的默认小图像出现,看起来像水平撕开的一张纸。

有什么想法吗? .png 文件存在,目录和 html 也正确显示了图像,但是当我将 html 放入 php 'echo' 调用时,我一定是搞砸了,只是不确定是什么。

为了确保我有正确的路径和文件名,您会看到我在代码顶部回显了它。
当我在浏览器中执行“查看源代码”时,php 变量 $pngFilename 显示为:

pngFilename is "C:/xampp/htdocs/myProj/just_a.png"  -- that was the .png image filename.

唯一需要提及的是'alt'链接,'alt="http://localhost/myProj/the_other.png"'——这个链接(不是图片)显示为蓝色带下划线的链接文本.

为什么这在我的 html 中有效,但是当我在 php 中使用“echo”时会中断?毕竟,“echo”只是将 html 发送到客户端——当我在 php 的“echo”命令之外运行上述 html 时,该 .png 文件肯定 100% 存在并且显示正常。

【问题讨论】:

    标签: php html


    【解决方案1】:

    这是因为图像的路径会根据您查看页面的方式而变化。在本地上下文中或从服务器上下文中;并且由于您使用的是绝对路径而不是相对路径,因此系统无法针对图像位置的变化进行调整。与使用调用内部文件系统的 php 文件系统函数的 PHP 函数不同。您所做的是让它向浏览器发送一个文本文件,该文件在 PHP 完成之前不会呈现为 HTML 代码。因为它无法访问 php 文件系统来解析服务器上图像的路径。修复它的方法是使用相对于 PHP 脚本的图像路径或使用图像的 Web 可访问路径

    $pngFilename= 'C:/xampp/htdocs/myProj/' . 'just_a.png';
    

    例如应该是

    $pngFilename= 'http://localhost/myProj/' . 'just_a.png';
    

    或者如果图像和php文件在同一个目录中,你可以这样做

    $pngFilename= 'just_a.png';
    

    【讨论】:

      【解决方案2】:

      您正在生成一个图像标签,例如:

      <img src="C:/xampp/htdocs/myProj/just_a.png" alt="http://localhost/myProj/the_other.png" />
      

      您不能使用此路径,您需要将其更改为http://localhost/myProj/just_a.png 或类似file:///C:/xampp/htdocs/myProj/just_a.png

      【讨论】:

      • Paulo 你是对的,但我很想接受 user833567 的回复,因为他解释了我的代码失败的原因。我还注意到你在 327 岁,而他只有 55 岁。顺便说一句,我向上箭头了你们两个。所以我应该掷硬币什么的。嘿乔尔·斯波尔斯基,你能解决这个问题吗?我希望能够接受这两个答案—— Paulo 因为他是第一个,而 833567 因为他详细解释了为什么我的代码不起作用。我要去塔可钟,回来时我会掷硬币。乔尔这次塔可钟之旅是为了您的荣誉。 ;)
      【解决方案3】:

      你应该尝试关闭你的 img 标签:

      echo '<img src="', $pngFilename, '"';
      echo 'alt="http://localhost/myProj/the_other.png">';
      

      【讨论】:

      • 我在帖子中省略了结尾的 />,但它在我的代码中。我还尝试将 li 列表项简单化为
      • ';并得到相同的非结果 - 没有图像。
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签