所以基本上,我正在编写一个框架,作为它功能的一部分,它应该为最终开发人员提供一组完善的 URI/路径。
其中一些路径使用$_SERVER['DOCUMENT_ROOT']
:
/**
* Absolute filesystem path to web root install (aka docroot).
* @example "C:/wamp/www" OR "/home/visitgoz/public_html/"
*/
CFG::set('ABS_WWW',
str_replace(
$tmpseps,
DIRECTORY_SEPARATOR,
truepath($_SERVER['DOCUMENT_ROOT']).'/'
)
);
/**
* K2F path relative to web root.
* @example /K2F/
*/
CFG::set('REL_K2F',
str_replace(
array('//','\\'),
'/',
str_replace(CFG::get('ABS_WWW'),'/',CFG::get('ABS_K2F'))
)
);
该代码已经过微调,可以在 Linux 和 Windows 上运行。显然,它大部分时间都在 Linux 上运行,实际上在 VPS 上非常无缝。
但是,最近,我在HG 经销商帐户(共享主机)上尝试了它,但一切都破裂了。我在有问题的机器上打印出 $_SERVER 内的数据:
Array
(
** [DOCUMENT_ROOT] => /usr/local/apache/htdocs
[GATEWAY_INTERFACE] => CGI/1.1
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_LANGUAGE] => en-gb,en;q=0.5
[HTTP_CONNECTION] => keep-alive
[HTTP_COOKIE] => <snip>
[HTTP_HOST] => <snip>
[HTTP_KEEP_ALIVE] => 115
[HTTP_USER_AGENT] => <snip>
[PATH] => /bin:/usr/bin
[QUERY_STRING] =>
[REDIRECT_STATUS] => 200
[REMOTE_ADDR] => <snip>
[REMOTE_PORT] => 49262
[REQUEST_METHOD] => GET
[REQUEST_URI] => /~sitename/
** [SCRIPT_FILENAME] => /home/sitename/public_html/index.php
[SCRIPT_NAME] => /~sitename/index.php
[SERVER_ADDR] => <snip>
[SERVER_ADMIN] => <snip>
[SERVER_NAME] => <snip>
[SERVER_PORT] => 80
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_SIGNATURE] =>
Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at <snip> Port 80
[SERVER_SOFTWARE] => Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
[UNIQUE_ID] => TVox-Eo1Z8IAAG1kAh4AAAEZ
[PHP_SELF] => /~sitename/index.php
[REQUEST_TIME] => 1297756668
[argv] => Array
(
)
[argc] => 0
)
还有我的机器:
Array
(
[HTTP_AUTHORIZATION] =>
[HTTP_HOST] => <snip>
[HTTP_USER_AGENT] => <snip>
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-gb,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[PATH] => <snip>
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.11 (Win32) PHP/5.3.1
[SERVER_NAME] => <snip>
[SERVER_ADDR] => <snip>
[SERVER_PORT] => 80
[REMOTE_ADDR] => <snip>
** [DOCUMENT_ROOT] => C:/wamp/www/
[SERVER_ADMIN] => admin@localhost
** [SCRIPT_FILENAME] => C:/wamp/www/K2F/cms/cms-joomla-1.5/index.php
[REMOTE_PORT] => 49947
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /K2F/cms/cms-joomla-1.5/
[SCRIPT_NAME] => /K2F/cms/cms-joomla-1.5/index.php
[PHP_SELF] => /K2F/cms/cms-joomla-1.5/index.php
[REQUEST_TIME] => 1297758541
)
** 您应该阅读的部分,应该可以完美地解释我的问题。
所以基本上,预期DOCUMENT_ROOT
是/home/sitename/public_html/
,但我得到了/usr/local/apache/htdocs
。
哦,对不起,如果我有点太冗长了;)
编辑:
getcwd()
=>/home/visitgoz/public_html
__FILE__
=>/home/visitgoz/public_html/K2F/config.php