【问题标题】:Issues with relative paths in PHP includesPHP 中的相对路径问题包括
【发布时间】:2015-08-26 08:29:05
【问题描述】:

在继续之前,我只想说我已经尝试了几乎所有方法,并且我在 Stackoverflow 上阅读了很多问题,但没有一个解决方案有效。

这就是交易,我有一个包含此代码的文件(“empresaConf.php”):

<?php
    include 'navigator2.php';
?>

<div class="contTudo">

    <div id="bgCorpo">

    <div class="empresaConf">

        <?php
            include 'sqEsqInc.php'
        ?>

    </div>

    </div>    

<?php 
    include '../rodape.php';
?>

</div>

</body>
</html>

如您所见,它包括“rodape.php”。问题是在“rodape.php”中,我有一个位于另一个文件夹中的图像,所以当我在“empresaConf.php”中包含“rodape.php”时,图像路径应该改变,因为 PHP 包含考虑文件路径成为您包含其他文件的文件,当我访问“empresaConf”时,会破坏 rodape.php 的图像。我想要解决这个问题,所以无论我在什么文件中,我都有图像。这是“rodape.php”代码:

<div class="empresa">

            /* below in the img src tag you can see what I'm talking about */
            <div class="redeSocial">
                <a href="http://www.facebook.com.br">
                    <img src="imgs/icons/iconFace42.png" class="iconeFace">
                </a>
            </div>

</div>  <!-- Fim div .empresa -->

文件夹结构是:“rodape.php”在根目录中,“empresaConf.php”在名为“Empresa”的文件夹中(我会发布一个img,但我不能)。

提前致谢。

编辑: 抱歉,我忘记了一个关键细节,我还在“index.php”等其他文件中包含“rodape.php”。因此,如果我将img src更改为对应“empresaConf.php”,那么在“index.php”中图像将被破坏,因为它在根目录中,与“rodape.php”相同。

【问题讨论】:

  • 我通常在 PHP 中使用绝对路径,使用 $_SERVER['DOCUMENT_ROOT'] env var。
  • 语法;你错过了一个分号include 'sqEsqInc.php'
  • 是的,就像弗雷德建议的那样,把分号放在末尾。如果问题仍然存在,请告知使用
  • 我尽量说清楚,所以让我们尝试恢复它:我的问题是从“rodape.php”的角度来看,img路径是“/imgs/icons/iconFace42 .png”,但是当我在“empresaConf.php”文件中包含“rodape.php”时,img 路径应该改变,因为我现在在“/empresa/empresaConf.php”工作,所以 img src 应该是“../imgs/icons/iconFace42.png”。如何定义每个文件的路径不同?

标签: php css path


【解决方案1】:

如果它是从事物的公共方面可访问的图像,则该图像可能可以由目录根访问。因此,如果您的 index.php 位于 /index.php 中,其中 / 是 Web 文档根目录,而您的图像位于 /imgs/icons/iconFace42.png 中,您可以通过

访问该图像
    <img src="/imgs/icons/iconFace42.png" class="iconeFace">

注意 src 属性中的前导斜杠。

【讨论】:

  • 这是有道理的,但是当我尝试这样做时,图像在“empresaConf”和“index”中都被破坏了。问题是,从“rodape.php”的角度来看,img 路径就是那个,但是当我将它包含在“empresaConf.php”中时,img 路径应该改变,因为我现在在“/empresa/”中工作empresaConf.php”,所以 img src 应该是“../imgs/icons/iconFace42.png”。如何定义每个文件的路径不同?
  • domain.com/index.phpdomain.com/empresa/empresaConf.php 的文件吗?如果是这样,这应该可以工作,否则,您必须包含所有子目录&lt;img src="/path/to/dir/imgs/icons/iconFace42.png" class="iconeFace"&gt;
  • 是的,这正是他们的路径。包含所有子目录是什么意思?我认为根目录是最后一个可能的目录。
  • 如果您正在开发一个站点,而您没有开发该域的主页,例如domain.com/mysite,并且您的索引和图像位于mysite/index.phpmysite/imgs/icons/iconFace42.png,那么您将拥有包括/mysite/ 子目录
  • 网站还没上线,我正在使用 EasyPHP。你认为这与它有关吗? "empresaConf.php" path = "localhost/projects/TCC_07-06_G/empresa/empresaConf.php" "index.php" path = "localhost/projects/TCC_07-06_G/index.php"
【解决方案2】:

你有一些选择。 如果仅从该文件夹级别访问 rodape.php,只需将 src 更改为 ../imgs/icons/iconFace42.png,如果您要更改文件夹深度,则使用图像的绝对路径。另一种方法是添加php代码来设置src,但这会浪费资源。

【讨论】:

    【解决方案3】:

    当您包含../rodape.php 时,可以将其想象为只是将该文件中的代码直接放在包含它的位置。路径字符串不会改变,因为它在被包含之前没有被执行。

    简而言之,就是说,事情将与正在执行的文件相关,而不是与被包含的文件相关。

    <img src="../imgs/icons/iconFace42.png" class="iconeFace"
    

    使用该图像代码应该可以解决您的问题。

    【讨论】:

    • 是的,我试过这样做,我忘了告诉我在其他文件中包含 rodape.php,所以这不起作用。不过感谢您的回答!
    • 是否有任何东西阻止您使用非相对路径,例如 yoursite.com/img/icons/iconFace42.png
    • 我不太明白这个问题(英语不是我的母语),但我正在使用 EasyPHP 来“托管”应用程序,因为它还没有上线。我想定义包含“rodape.php”的每个文件中的 img src 路径是不同的。
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2018-08-28
    相关资源
    最近更新 更多