当使用php include函数时,我可以轻松地在多个页面上使用相同的代码,现在我遇到的问题是,我的包含文件,输出和图像。
当调用include的页面发生更改时,include调用的文件位置也会发生变化。得到它?
实施例: 我得到了一个名为“index.php”的名字。 我还有一个名为“load.php”的文件。 我最后得到一个名为“/folder/index2.php”的文件
index.php代码:<?php include("load.php"); ?>
index2.php代码:<?php include("../load.php"); ?>
load.php代码:<?php echo '<img src="image.png"/>'; ?>
加载index.php时,图像会完美显示。 当加载位于另一个文件夹中的index2.php但成功加载“load.php”文件时,图像说它找不到,这是有道理的,因为index2.php正在调用图像,就像它是在同一个文件夹中,它不是。
那么,有没有办法做到这一点?我试图避免使用完整的URL,但如果这是我将使用它的唯一方法。我只是在寻找更好的选择。
答案 0 :(得分:2)
首先,尝试使用文档根目录指定您的include
文件:$_SERVER['DOCUMENT_ROOT']
...这将始终指向公共根文件夹,因此无论您在网站的哪个位置,它都是相同的是 - 当你开始包含自己include
/ require
其他文件的文件时,这是特别有用的......在这种情况下,包含的脚本本身包含相对的子脚本( ../load.php
| subfolder/load.php
等)永远不会在文件夹层次结构中的两个不同级别上运行。
<?php include($_SERVER['DOCUMENT_ROOT']."/load.php"); ?>
然后对于在html中调用的资源,简单地将它们全部相对于公共根目录:
<?php echo '<img src="/image.png"/>'; ?>
注意图片/
前面的src
?无论当前显示的页面在哪个文件夹中,它都将始终调用图像。
或者,您可以绝对指定资源(尽管这不是理想的,就好像网站域更改它会破坏资源链接):
<?php echo '<img src="http://www.yoursite.com/image.png"/>'; ?>
无论哪种方式,无论您调用哪个脚本,其中的包含都会始终从正确的位置抓取(无需在../
调用中添加include
等)和图片/脚本/ css / etc无论在什么页面被拉入
答案 1 :(得分:1)
$_SERVER['DOCUMENT_ROOT']
表示包含中的当前公共根,如上所述。
可以使用斜杠启动图像源:<img src="/image.png">
告诉浏览器查看域根。提到的src会告诉浏览器检查www.example.com/image.png,如果放在www.example.com下的任何文档或其任何子目录中。
编辑:Ben编辑速度更快
答案 2 :(得分:0)
我建议制作一个config.php
使用变量作为完整路径E.g. $imgPath = 'www.host.com/path/images/';
在每个页面的开头包含它,
在load.php中使用<?php echo '<img src="'.$imgPath.'image.png"/>'; ?>
现在当你包含load.php时,你将没有错误:)