李找不到图像


li cannot find image

我有一个带有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,但打破当我使用'echo'在php?毕竟,"echo"只是将html发送到客户端—并且该。png文件100%肯定存在并且当我在php的"echo"命令外运行上述html时显示良好。

这是因为图像的路径根据您查看页面的方式而变化。在本地上下文中或从服务器上下文中;因为你使用的是绝对路径而不是相对路径,所以系统无法根据图像位置的变化进行调整。与使用调用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';

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

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

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

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

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