PHP包含路径

时间:2010-05-04 17:59:46

标签: php css absolute-path

我是PHP的新手,在尝试使用include链接我的CSS文件时遇到了问题。

基本上我需要将文件链接回某个目录,无论文件有多远。我尝试过使用

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/sysprogs/required/header.html'; 
?>

但是header.html包含指向我的css文件的链接,所以它最终寻找css文件的目录是

http://localhost/SysProgs/software/CSS/style.css

而不是我希望它去哪里

http://localhost/SysProgs/required/CSS/style.css

我希望这是有道理的,我希望你能帮助我

谢谢你们所有人的帮助!

5 个答案:

答案 0 :(得分:7)

我绝对不会使用<base>。我之前遇到过很多问题。如果您使用<base>,则所有链接都将相对于该基本值。

相反,我建议为常见目录设置PHP常量。例如:

PHP代码:

<?php
    define('CSS_DIR', '/SysProgs/required/CSS/');
?>

HTML代码:

<link href="<?php echo CSS_DIR ?>style.css" rel="stylesheet" type="text/css" />

答案 1 :(得分:3)

一个想法

使用header.html中的完整网址。这将是明确和强大的。

<head>
<link href="/FULL_BASE_URL/style/style.css" rel="stylesheet" type="text/css" />
</head>

另一个想法

使用<base>标头标记。这允许您为链接指定基本URL,包括CSS,并且可能需要在短期内完成最少的工作(请参阅下面的注释)。

<head>
<base href="FULL_BASE_URL" />
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>

更多w3schools

注意:正如下面的评论中所提到的,base可能最终会造成比其值得更多的混淆。

答案 2 :(得分:2)

我喜欢在应用程序的中心位置定义绝对路径和webroot:

<?php

  define("APP_WEBROOT", "/myapp"); 
  define("APP_ROOTDIR", "/home/www/example.com/htdocs/myapp");

 ?>

然后你可以像这样“绝对化”正确的链接:

<?php echo APP_WEBROOT; ?>/software/CSS/style.css

我更喜欢这个

  • 超过<base>,因为该标记会造成混淆并使代码难以长期维护

  • 使用绝对路径/software/CSS/style.css,因为这些使您无法在您选择的子目录中安装应用程序:您将始终绑定到根目录。

答案 3 :(得分:0)

在设计网站时我经常遇到这个问题。当我有自定义CMS时,我使用以下内容:

$basedir = "root_directory/";
$basedirPHP = $_SERVER['DOCUMENT_ROOT'].$basedir;
$basedirHTML = "http://".$_SERVER['SERVER_NAME'].$basedir;

我定义了$ basedir所以我可以毫不费力地将网站移动到服务器中的不同子目录。 $ basedirPHP和$ basedirHTML是这样我可以用php或者像你提到的那样在链接CSS,JS等时调用文件。

如果您使用wordpress,只需使用好的“bloginfo('template_directory');在模板文件中执行相同操作。

答案 4 :(得分:-2)

首先要了解的是,你的问题与PHP无关。它就像HTML questuon中的文件名一样简单。如果没有PHP,它将保持不变。只需使用CSS文件的绝对路径

还有另一件事要考虑:考虑接受一些问题。