Php 在一个位置一次性定义根路径
我喜欢使用图像、css和php文件的绝对路径,即从根开始,地址以“/”开头 我需要包含所有位于“/bin/res/include”的php文件。我发现我不能像在html中那样在php中使用绝对路径。经过一些研究,我发现适合我需要的最好方法是Php 在一个位置一次性定义根路径,php,html,absolute-path,Php,Html,Absolute Path,我喜欢使用图像、css和php文件的绝对路径,即从根开始,地址以“/”开头 我需要包含所有位于“/bin/res/include”的php文件。我发现我不能像在html中那样在php中使用绝对路径。经过一些研究,我发现适合我需要的最好方法是 define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/"); 然后包含一些文件 include_once(PHP_ROOT."filename.php"); 我不想在每个html页面
define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/");
然后包含一些文件
include_once(PHP_ROOT."filename.php");
我不想在每个html页面上粘贴第一个define。我可以做一个全局定义吗?我可以在一个地方一次性定义该常量,并让所有html页面都知道它吗?如果是的话,全球的位置在哪里
- 我不能使用
dirname(_文件__)因为这只给出了我当前所在文件夹的完整路径,而该文件夹可能不是根目录
- 我无法使用
,因为我正在使用共享主机服务$\u服务器['DOCUMENT\u NAME']
[更新:解决方案]thx各位,特别是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
#加载位于//init.php的init php
php_value auto_prepend_file/home/a7503679/public_html/bin/res/include/init.php
现在,我的所有html文件都将包含init.php文件,因此您应该(正如我所做的那样)在每个html页面上放上您需要的所有常见php代码,在我的例子中是:
<?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'代码>我认为您要做的是修改您的自定义包含路径。然后,您可以只包含没有任何路径限定符的文件,如果它们不在当前目录中,PHP将在您的包含路径中搜索它们。如果您无法修改php.ini,请在配置文件中调用,您知道您必须在每个页面上都包含该文件。:) 您可以在中使用.htaccess
PS:$\u服务器['DOCUMENT\u ROOT']
也应该可以工作(在共享主机上)将定义添加到包含在每个页面上的包含页面,就像配置/数据库/语言文件一样我不知道是否可以修改或创建php.ini
文件,但我确实有一个.htaccess
文件。php.ini
应该放在哪里?我想我没有任何配置文件包含在每个页面中,你能举个例子吗?有一个。。。我可以把定义粘贴到css文件中吗?听起来很邪恶!我打印了一个phpinfo(),发现我在/usr/local/lib
上已经有了一个php.ini
,我不可能到达那里。有没有办法使用.htaccess文件包含一个“init”php文件?这似乎比使用css文件更直观。要“prepend”的文件应该是带有define代码的php文件吗?$\u服务器['DOCUMENT\u ROOT']
返回/usr/local/apache/htdocsa
,该路径与任何可用位置都不对应(我甚至不知道它在哪里!:P)