$_SERVER['DOCUMENT_ROOT'] 值為空白,但是在phpinfo()測試頁面中卻有實際資料,這是我的程式哪裡有問題?還是配置上的問題啊?
/*
測試程式
調用Base_Info.php
*/
print_r($_SERVER);
$SYSTEM_ROOT_PATH = $_SERVER['DOCUMENT_ROOT'];
#echo $_SERVER['DOCUMENT_ROOT']."\n";
echo $SYSTEM_ROOT_PATH;
/*
include("$SYSTEM_ROOT_PATH\Lib\Base_Info.php");
$class = new Base_Info();
$S_Info = $class->System_Info();
foreach ($key as $value){
echo "$key========$value"."\n";
}
*/
$_SERVER數組輸出
[ALLUSERSPROFILE] => C:\ProgramData
[ANT_HOME] => D:\hadoop\apache-ant-1.9.2
[APPDATA] => C:\Users\yjn\AppData\Roaming
[CLASSPATH] => ,;D:\hadoop\Java/lib/dt.jar;D:\hadoop\Java/lib/tools.jar
[CommonProgramFiles] => C:\Program Files (x86)\Common Files
[CommonProgramFiles(x86)] => C:\Program Files (x86)\Common Files
[CommonProgramW6432] => C:\Program Files\Common Files
[COMPUTERNAME] => YJN-PC
[ComSpec] => C:\Windows\system32\cmd.exe
[FP_NO_HOST_CHECK] => NO
[HOMEDRIVE] => C:
[HOMEPATH] => \Users\yjn
[JAVA_HOME] => D:\hadoop\Java
[LOCALAPPDATA] => C:\Users\yjn\AppData\Local
[LOGONSERVER] => \\YJN-PC
[NUMBER_OF_PROCESSORS] => 2
[OS] => Windows_NT
[Path] => C:\Perl64\site\bin;C:\Perl64\bin;C:\Windows\system32;C:\Windows;
ndows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\hadoop\J
in;D:\hadoop\Java/jre/bin;D:\hadoop\apache-ant-1.9.2\bin;D:\php5;D:\php5\ex
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[PROCESSOR_ARCHITECTURE] => x86
[PROCESSOR_ARCHITEW6432] => AMD64
[PROCESSOR_IDENTIFIER] => Intel64 Family 6 Model 23 Stepping 10, GenuineIn
[PROCESSOR_LEVEL] => 6
[PROCESSOR_REVISION] => 170a
[ProgramData] => C:\ProgramData
[ProgramFiles] => C:\Program Files (x86)
[ProgramFiles(x86)] => C:\Program Files (x86)
[ProgramW6432] => C:\Program Files
[PROMPT] => $P$G
[PSModulePath] => C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
[PUBLIC] => C:\Users\Public
[SESSIONNAME] => Console
[SystemDrive] => C:
[SystemRoot] => C:\Windows
[TEMP] => C:\Users\yjn\AppData\Local\Temp
[TMP] => C:\Users\yjn\AppData\Local\Temp
[USERDOMAIN] => yjn-PC
[USERNAME] => yjn
[USERPROFILE] => C:\Users\yjn
[windir] => C:\Windows
[windows_tracing_flags] => 3
[windows_tracing_logfile] => C:\BVTBin\Tests\installpackage\csilogfile.log
[PHP_SELF] => test.php
[SCRIPT_NAME] => test.php
[SCRIPT_FILENAME] => test.php
[PATH_TRANSLATED] => test.php
[DOCUMENT_ROOT] =>
[REQUEST_TIME] => 1381282125
[argv] => Array
(
[0] => test.php
)
[argc] => 1
回複討論(解決方案)
$_SERVER['DOCUMENT_ROOT'] 需要在伺服器配置中指定,你確認phpinfo有這個值嗎?
你$_SERVER數組輸出['DOCUMENT_ROOT']很明顯是空的
確實在phpinfo中能到得到該值。很奇怪,不知道代碼中是否有問題
httpd.conf中的設定
DocumentRoot "D:\Apache\htdocs"
_SERVER["DOCUMENT_ROOT"] D:/Apache/htdocs
你$_SERVER數組輸出['DOCUMENT_ROOT']很明顯是空的
我就想知道為什麼是空?
echo $_SERVER["DOCUMENT_ROOT"];
個人覺得不應該糾結於 $_SERVER['DOCUMENT_ROOT']
這個變數並不是通行於各個伺服器,說不準換了一台伺服器就要查錯並重寫代碼了
建議用 __FILE__ 或 __DIR__
如果確實需要知道所以然,就去查資料吧,據聞虛擬機器用這個變數也是有問題,沒有環境實測