我环顾四周寻找答案,希望我没有错过它,或者我没有重复它,但是它在这里。我有两个文件:
/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脚本。我希望该网站是模块化的,因此可以在任何地方发布,而不必担心文件位置搞砸了。有更简单的方法吗?
答案 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