我有一个带有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显示正确。
但是当我切换到php服务器端生成的html时,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发送到客户端 - 而且.png文件肯定是100%并且当我在php的“echo”命令之外运行上面的html时显示正常。
答案 0 :(得分:3)
这是因为图像的路径会根据您查看页面的方式而改变。在本地环境中或从服务器上下文;由于您使用的是绝对路径而不是相对路径,因此系统无法根据图像位置的变化进行调整。与使用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';
答案 1 :(得分:2)
您应该尝试关闭img标记:
echo '<img src="', $pngFilename, '"';
echo 'alt="http://localhost/myProj/the_other.png">';
答案 2 :(得分:1)
您正在生成以下图片代码:
<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
之类的内容。