PHP路径位置

时间:2013-04-10 17:24:13

标签: php css web

我环顾四周寻找答案,希望我没有错过它,或者我没有重复它,但是它在这里。我有两个文件:

/var/www/index.php

/var/www/include/php/header.php

索引包含header.php文件。我希望头文件能够遍历两个级别,所以我可以包含/include/css/index.css。这是问题,标题也包含在

等文件中

/var/www/sub/page.php

所以我不能简单地使用../../因为php文件的位置发生了变化。我尝试使用$_SERVER['PHP_SELF'],但这会根据包含头文件的php文件的位置而改变。我也试过了dirname(__FILE__),但这给了我/var/www/部分,这会引起包含的并发症。

基本上我想从包含的$_SERVER['PHP_SELF']文件中获取header.php的值,而不是包含它的php脚本。我希望该网站是模块化的,因此可以在任何地方发布,而不必担心文件位置搞砸了。有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

认为您需要使用__DIR__常量来包含相对于任何文件的文件。 但更好的是我认为为你的根文件系统路径定义一些常量,比如

define( 'FS_ROOT', 'root path here' );

当包含相对于此常量的文件时。此外,它还允许您为每个使用过的重要文件夹添加常量,如果要更改路径,您只需要更改一些常量值

答案 1 :(得分:1)

根据您的评论,它是CSS的包含,您基本上不担心PHP文件的位置,只需从服务器角度(Web端)执行此操作:

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

对于应用的/include/css文件夹中的文件(网络公开)

更新

根据您更新的评论,您应该为您的应用(配置)存储变量,并调用类似CodeIgniter的函数:

$domain_url= "http://".$_SERVER['HTTP_HOST'];
$domain_url.= tr_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

function base_url($url){
    return $domain_url + $url;
}

echo base_url("include/css/index.css");

参考: http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html