在一个地方定义一次根路径

时间:2011-08-05 15:26:25

标签: php html absolute-path

我喜欢使用绝对路径来引用图像,css和php文件,这是从root开始的,地址以“/”开头。

我需要包含全部位于“/ bin / res / include”的php文件。我发现我不能像在html中那样在php中使用绝对路径。经过一些研究,我发现最适合我需要的方法是

define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/");

然后包含一些文件

include_once(PHP_ROOT."filename.php");

我不想在每个html页面上粘贴第一个定义。我可以进行全局定义吗?我可以在一个地方定义一次该常量并让所有html页面都知道吗?如果是这样,全球的位置和位置在哪里?


  • 我无法使用dirname(__FILE__);,因为它只提供了我当前所在文件夹的完整路径,可能不是根目录。
  • 我无法使用$_SERVER['DOCUMENT_NAME'],因为我正在使用共享托管服务。

[更新:解决方案]大家,尤其是RiaD的想法,这就是我所做的:

在我的网站根目录编辑了我的.htaccess文件并添加了以下行

#Loads an init php located at <fullpath>/<path-to-folder-with-php-files-to-include>/init.php
php_value auto_prepend_file /home/a7503679/public_html/bin/res/include/init.php

现在我所有的html文件都会包含那个init.php文件,所以你应该(就像我一样)把你需要的所有常见的PHP代码放在每个html页面上,在我的例子中是这样的:

<?php
define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/"); #this solves the problem
include 'lang.php'; #translations file
?>

在我需要在每个页面上包含lang.php之前,现在它已自动完成。如果我需要使用其绝对路径包含任何其他php文件,我只需输入include PHP_ROOT.'filename.php';

3 个答案:

答案 0 :(得分:3)

您可以在.htaccess

中使用auto_prepend_file

PS:$_SERVER['DOCUMENT_ROOT']应该可以使用(在共享主机上)

答案 1 :(得分:1)

我认为您要做的是修改include_path in php.ini以包含自定义包含路径。然后你可以只包含没有任何路径限定符的文件,如果它们不在当前目录中,PHP将搜索你的包含路径。如果您无法修改php.ini,请在配置文件中调用set_include_path,您知道无论如何都要包含在每个页面上。 :)

答案 2 :(得分:0)

将define添加到包含在每个页面上的包含页面,如config / database / language file