我需要2个不同的路径,一个用于包含,一个用于js / css等。我正在使用mod_rewrite
。以下工作正常......
目前我的所有文件都包含在顶部
define('SERVER_ROOT', 'C:/wamp/www/site_folder/');
define('SITE_ROOT', 'http://localhost/site_folder/');
然后调用文件:
require_once SERVER_ROOT . 'st_wd_assets/inc/func_st_wd.php';
<link rel="stylesheet" type="text/css" href="<?php echo SITE_ROOT;?>st_pages/user_area/css/user_area.css" media="screen"/>
正如您可能看到的,每次在localhost和我的实时服务器之间移动版本时,更新每个文件的顶部将是一项繁重的工作。
定义这些ROOT值的最佳/标准方法是什么?
我无法在$_SERVER
超级全球范围内看到解决方案?人们通常只使用VirtualHosts吗?但那么是否仍然需要定义ROOT常数?
答案 0 :(得分:2)
是。 人们通常只使用VirtualHosts。
有几种方法。
php_value auto_prepend_file
答案 1 :(得分:1)
为什么不用
制作config.php文件define('SERVER_ROOT', 'C:/wamp/www/site_folder/');
define('SITE_ROOT', 'http://localhost/site_folder/');
并且不会将其附加到每个文件的顶部。
require_once ('config.php');
一旦制作 - 将来没有问题。如果您正在移动您的网站 - 只需编辑或不覆盖配置文件。
答案 2 :(得分:0)
结合使用相对包含/要求和autoloading of classes,您可以完全避免使用SERVER_ROOT
。像SITE_ROOT
这样的东西属于配置文件,包含在需要的地方。
答案 3 :(得分:0)
如果您没有使用VirtualHosts,则$ _SERVER ['DOCUMENT_ROOT']可能无法返回正确的值。对于您的网站,它看起来会返回“C:/ wamp / www”
您可以使用这个简单的定义将SERVER_ROOT设置为当前目录,后跟斜杠(目录分隔符):
define('SERVER_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
然后,应该将SERVER_ROOT定义为服务器的“C:/ wamp / www / site_folder /”。
但是,除非所有.php文件都包含在“C:/ wamp / www / site_folder /”中,否则这可能无效。 define将返回该文件夹的子目录中的.php文件的不同值。
答案 4 :(得分:0)
我使用php_uname('n')
返回当前运行php的计算机的名称。有了这个,您可以制作每台计算机的配置文件:
$configFile = 'config/' . php_uname('n') . '.config.php';
if (file_exists($configFile)) {
include($configFile);
}
然后将配置指令放在config / your_computer_name.config.php和config / live_servers_name.config.php中。
答案 5 :(得分:0)
在docroot中创建一个文件。称之为settings.inc。
//settings.inc:
define('SITE_ROOT', 'site_folder');
require_once (dirname(__FILE__)) . '/st_wd_assets/inc/func_st_wd.php';
然后在每个文件中
require_once (dirname(__FILE__)) . "/settings.inc";
不要担心css或超链接的根和诸如此类的东西。只需在“/".
前面加上它们