使用$ _SERVER ['DOCUMENT_ROOT'时] CSS不会做它的事情

时间:2011-09-05 10:57:42

标签: php css

我正在学习PHP类和对象,所以为了获得一些经验,我正在使用这些而不是静态html转换我的网站,以免我一遍又一遍地输入相同的通用HTML。

所以,这是对象的一部分:

<link rel=\"stylesheet\" type=\"text/css\" href=\"".$_SERVER['DOCUMENT_ROOT']."/main.css\" />

...在浏览器中生成它(在我更改Apache配置文件中的根目录之后):

<link rel="stylesheet" type="text/css" href="C:/wamp/www/test/main.css" />

我的问题是该css文件中的样式没有显示在页面上。如果我复制浏览器中显示的css文件的位置(单击“查看源”时)并将其输入到URL栏中,则会显示css文件。因此,如果我可以通过这种方式访问​​它,为什么网页无法访问它?我假设它与权限有关,但是如果我在文件浏览器中右键单击css文件,它说一切都至少可以读取它......

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

省去一些努力。这也适用:

<link rel="stylesheet" type="text/css" href="/main.css" media="all" />

当然,这假设CSS文件位于文档根目录中。

答案 1 :(得分:0)

如果其他人访问您的网页并且没有名为"C:/wamp/www/test/main.css"的文件,会怎样? ;-)我想每个浏览器的实现会有所不同,但是网站不应该以这种方式访问​​访问者计算机上的资源。

您想要使用网站名称(可通过$_SERVER['SERVER_NAME'获得)或绝对网址(/test/main.css),并在$_SERVER['SERVER_NAME']元素中设置<base href>。< / p>

答案 2 :(得分:0)

您通过网址(http://example.com/foo/bar)访问网站,而不是通过服务器硬盘中的路径(C:\www\example\htdocs\foo\bar\index.html)。这适用于所有内容:文档,图片......和样式表。

除非您打算更改它,否则您不需要从PHP变量中获取Web根目录。大多数情况下,您可以愉快地对/进行硬编码。我建议创建自己的常量:

define('WEB_ROOT','/');

&GT;