我在整个项目中使用以下内容,直到现在都没有发现问题:
include '../titleBar.php';
require_once '../navBar.php';
require_once '../theDatabase.php'; // functions for the UI and DB access
require_once '../globals.php'; // variables and statics used throughout
上面的FINE工作了3周。文件名之前../的原因是:上述语句出现在用户特定文件中的用户子文件夹中,例如 FOO_x.php ,这些文件特定于用户输入的数据 - 仅包含以上内容和require_once文件涉及公共代码,公共代码是根网站目录中子文件夹上方的一个目录。
所以我添加了这个新代码,它没有引入样式表:
include '../titleBar.php';
require_once '../navBar.php';
require_once '../theDatabase.php';
require_once '../globals.php';
<html>
<head>
<link rel="stylesheet" type="text/css" href="../globalStyles.css" />
我将其更改为此,并将样式表拉到用户特定文件FOO_x.php:
<link rel="stylesheet" type="text/css" href="globalStyles.css" />
KEEP IN MIND - 上面的链接rel位于根网站子目录中的文件 FOO_x.php 中。 AND - 文件'globalStyles.css'是.....不在FOO_x.php所在的子目录中。
文件'globalStyles.css'是包含FOO_x.php的文件夹的一个级别。
那么为什么/怎么可能href = globalStyles.css工作呢?那就好了。
因为过去3周,FOO_x.php顶部的include / require列表中的第二个文件'navBar.php' 在其中有以下声明:
<base href='http://localhost/theSiteRootFolder/'></base>
所以当我尝试
时 <link rel="stylesheet" type="text/css" href="../globalStyles.css" />
并且没有任何样式出现在FOO_x.php页面上,我将其切换为
<link rel="stylesheet" type="text/css" href="globalStyles.css" />
突然出现了风格。然后,我记得“很久以前”,我会把“基础”声明 在navBar.php。
接下来我想“好吧,如果link rel语句使用了navBar.php中的'base'语句 - 那么文件 theDatabase.php 和 globals.php 的require_once也不需要../。 毕竟,这两个文件在在require_once navBar.php中的'base'语句后出现,就像 链接rel语句。“逻辑(给我)。
所以我将文件FOO_x.php的顶部更改为:
include '../titleBar.php';
require_once '../navBar.php';
// these next 2 file 'requires' should work -- the navBar.php declared a 'base' to be the folder above this one
require_once 'theDatabase.php';
require_once 'globals.php';
我认为“一旦navBar.php被其基础声明引入,因为显然链接相关坚持认为 globalStyles.css不能有../ - 那么theDatabase.php或者globals.php也不应该。
因为所有这三个语句都出现在'base'语句的 href ='http:// localhost / theSiteRootFolder 之后 相对路径根。
然而,只有link rel'尊重'或支付注册在navBar.php上面声明的'基础'语句。
为什么呢?我不明白为什么,因为navBar.php建立了所有相对路径解决的“基础” - 为什么这不起作用:
<link rel="stylesheet" type="text/css" href="../globalStyles.css" />
但这些工作很精细?
include '../titleBar.php';
require_once '../navBar.php';
// okay the 'base' was just established yet I still have to do this:
require_once '../theDatabase.php';
require_once '../globals.php';
答案 0 :(得分:5)
PHP解析器不解析HTML。它仅在<?php ?>
标记之间解析 内容。基本上,您的<base>
标记对PHP来说毫无意义。
我建议你不要使用<base>
,因为我永远不会看到使用它的理由。