PHP / IIS相对包含混淆

时间:2013-01-08 16:53:25

标签: php sql sql-server-2005 iis-6

我想知道这种设置是否可行,因为我在设置时遇到了很多麻烦。我正在尝试建立一个文件结构如下的网站:

  • project1 (文件夹)
    • 的index.php
    • 的style.css
    • include.php
      • admin (文件夹)
        • 的index.php

父“project1”文件夹位于D:\ Projects \ project1中的“server1”上。

可通过虚拟目录“http://server1/project1”访问该网站。

我希望能够以'/style.css'格式编写包含,图像srcs,样式表等的所有路径,以便无论在何处需要它们都可以找到这些文件。例如。以下链接应该有效,无论它放在'project1'文件夹还是'admin'文件夹中:

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

编辑:mellamokb所示,使用href =“/ project1 / style.css”似乎可以同时使用'index.php'文件。但是我似乎无法为PHP INCLUDE找到类似的解决方案。

如果我用这个......

<?php include_once '/include.php'; ?>

...在两个index.php文件中, admin 目录中的文件无法找到该文件。

我希望 $ _ SERVER ['DOCUMENT_ROOT'] 返回“D:\ Projects \ project1”,但它返回D:\ staging,我无法解决原因。我已经尝试了一些设置项目“root”的不同方法,但我最终还是让自己更加困惑!项目的虚拟根目录应为“http://server1/project1”,物理根目录应为D:\ Projects \ project1,但我无法确定如何强制执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以创建一个包含常量的文件,并使其具有define('BASE_URL', "http://server1/project1/")的内容。然后你可以使用常量变量BASE_URL进行相对工作,因此,

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

您还可以通过附加“相对”地址来处理其他文件。

include (BASE_URL . '<file you want to add>');