我所有的PHP包括文件是在一个目录:设置的路径包括/需要的文件
https://www.mywebsite.com/includes
插入在顶层网页这些文件是很容易的:
<?php include 'includes/logo.php'; ?>
<?php include 'includes/main_nav.php'; ?>
<?php include 'includes/news.php'; ?>
etc.
对于子目录页我一直在做这样的:
<?php include '../includes/logo.php'; ?>
<?php include '../includes/main_nav.php'; ?>
<?php include '../includes/news.php'; ?>
这:
<?php include '../../includes/logo.php'; ?>
<?php include '../../includes/main_nav.php'; ?>
<?php include '../../includes/news.php'; ?>
到目前为止这么好,但我怀疑它不会继续这么简单。
现在我需要包含这个文件:
top_five_news_stories.php
在此
:
news.php
在这一点上,因为在包括包括只能有一个路径结构我的相对路径的策略失败。
我读过几个职位推荐使用绝对路径:
dirname(__FILE__)
realpath(dirname(__FILE__)
$_SERVER["DOCUMENT_ROOT"]
然而,它们都配备了与PHP配置某种知会备忘,服务器配置或操作系统。换句话说,有人经常会有人发表评论,说他们没有在他们的情况下工作,或者不能在IIS中工作,或者在UNIX或其他工作中不起作用。
我还没有看到一个解决方案是一个我认为将是最简单:只需设置一个变量:
$base = "https://www.mywebsite.com/includes";
则:
<?php include $base . "logo.php" ?>
考虑到我已经使用HTML base
element,这以类似的方式工作,这种方法让我感到简单而有效。
但是,因为它没有在我阅读的任何帖子中提到,我想知道如果我忽略了一个潜在的问题。
老实说,如果我不得不去生产到今天,我会用这样的:
<?php include $_SERVER['DOCUMENT_ROOT'] . '/logo.php" ?>
这对我的作品,通常提及。
但我想知道如果使用变量是一个可靠的,有效的方法?
不要在'include'所使用的网址。当你通过网络服务器访问一个PHP脚本时,它会在远端执行它,它不会返回源代码,但是'include'需要源代码。 – Barmar
看一下'php.ini'中的'include_path'设置。将你的包含文件放在那个目录中,然后你可以从任何脚本访问它们。 – Barmar
http://php.net/manual/en/ini.core.php#ini.include-path – Barmar