我试图在本地开发一个网站,最终FTP到我的服务器。我的index.php
文件包含以下行:
<?php include($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php");?>
我们的想法是在网站的每个页面中包含一个单独的header.php
文件。此代码适用于服务器,但不适用于localhost,因为$_SERVER['DOCUMENT_ROOT'] .
部分仅对服务器有效。
有没有办法让BOTH服务器和localhost的路径正确,所以当从localhost移动到服务器时,我不需要编辑每个网页?
以上内容与PHP有关,但我还需要回答HTML代码的相同问题,例如:
<img src="/images/logo.png" alt="site name" />
从服务器上的Web根开始。这是否适用于localhost?
我认为这必须是一个共同的需要,并想知道传统智慧是什么。我没有使用框架(只是一个文本编辑器)。提前感谢您的任何意见/帮助。
更新
我在这里看到一个类似的问题,
How to set root folder for PHP include files
虽然答案与使用我没有的config.php文件有关,并且没有解决HTML部分。
答案 0 :(得分:2)
使用../
返回文件层次结构的次数与文件夹一样多。
<?php include "../../includes/header.php";?>
在html中相同
<img src="../../images/logo.png" alt="site name" />
如果您的文件结构很大,请尝试在本地主机和服务器的单独文件中使用这样的基础:
本地主机:<?php $base= 'http://localhost';?>
和服务器:<?php $base= $_SERVER['DOCUMENT_ROOT'];?>
然后在您的所有页面中都可以include("../../base.php");
这样您只需在每个页面中输入一次../
答案 1 :(得分:2)
我通常使用像Sam这样的方法,因为它简单易用,但它可以在更大,更复杂的应用程序上分崩离析。对于这些情况,您可以在配置文件中定义路径。你仍然需要知道脚本中该文件的相对路径,但之后一切都会很简单。
//config.php
define("DOCPATH","c:/dev");
define("ROOTURL","http://localhost/");
//your file
include_once("../../config.php");
set_include_path(DOCPATH);
然后你可以在你的图像src中使用php
<img src="<?php echo ROOTURL;?>images/logo.png" alt="site name" />