使用 dirname 和 img src 在 apache 网络服务器上显示徽标

Using dirname with img src to display a logo on apache webserver

这是我的基本练习网站的结构

/opt
    /lampp
        /htdocs
            /web
                /img
                    logo.png
                /tests
                    HomeView_test.php
                /view
                    HomeView.class.php
                index.php

我最初的问题是我正在使用自动加载,index.php 中的 运行 HomeView.class.php 和 HomeView_test.php 中的 HomeView.class.php 无法加载我的徽标图像如果我只对其中一个路径进行硬编码,则在两者上。因此,例如,如果我硬编码从 index.php 调用时工作的路径,那么当从 HomeView_test.php

调用时它也不会工作

这是 HomeView.class.php

中的内容
<?php
class HomeView {
  public static function show() {  
    $pathDir = dirname(__FILE__);
    $fileName = $pathDir . DIRECTORY_SEPARATOR . "../img/logo.png";
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>Website</title>
    </head>
    <body>
        <header>
            <img src="<?php echo $fileName;?>" alt="Logo" width="150" height="100"/>
            <nav>
                <ul>
                    <li>
                        <a href="#">About</a>
                    </li>
                    <li>
                        <a href="#">Contact Us</a>
                    </li>
                </ul>
            </nav>
        </header>
        <footer>
            <p>
                &copy 2015 Peeps, Inc. All Rights Reserved.
            </p>
        </footer>
    </body>
</html>
<?php
  }
}
?>

我认为 src 内部路径的 php 回显可以工作,但它仍然没有加载徽标图像。

img/logo.png 中的硬编码仅在 index.php 中调用 HomeView.class.php 时有效,但当我从 HomeView_test.php 中调用它时,它需要 ../img/logo.png 显示徽标

有人知道我做错了什么吗?也许 img src 和 php 语法已关闭,因为我之前从未尝试过将 php 与 img src 结合使用。

在这种情况下,当您想要显示网页中的图像时,无论您使用何种后端语言,都需要提供 public 媒体服务器路径。

所以当你有这个声明时:

<img src="<?php echo $fileName;?>" alt="Logo" width="150" height="100"/>

变量 $filename 在 HTML 中输出时应该看起来像 /img/logo.png

您的目标是提供 url 的 public 网络位置,而不是服务器位置。