예제 #1
0
파일: Request.php 프로젝트: hubs/yuncms
 /**
  * 返回当前执行脚本的绝对路径
  *
  * <pre>Example:
  * 请求: http://www.tintsoft.com/example/index.php?a=test
  * 返回: /example/index.php
  * </pre>
  *
  * @throws Base_Exception 当获取失败的时候抛出异常
  */
 private static function _init_script_url()
 {
     if (($script_name = self::get_server('SCRIPT_FILENAME')) == null) {
         throw new Base_Exception('[Base.Base_Request._init_script_url] determine the entry script URL failed!!!');
     }
     $script_name = basename($script_name);
     if (($_script_name = self::get_server('SCRIPT_NAME')) != null && basename($_script_name) === $script_name) {
         self::$_script_url = $_script_name;
     } elseif (($_scriptName = self::get_server('PHP_SELF')) != null && basename($_script_name) === $script_name) {
         self::$_script_url = $_scriptName;
     } elseif (($_script_name = self::get_server('ORIG_SCRIPT_NAME')) != null && basename($_script_name) === $script_name) {
         self::$_script_url = $_scriptName;
     } elseif (($pos = strpos(self::get_server('PHP_SELF'), '/' . $script_name)) !== false) {
         self::$_script_url = substr(self::get_server('SCRIPT_NAME'), 0, $pos) . '/' . $script_name;
     } elseif (($_document_root = self::get_server('DOCUMENT_ROOT')) != null && ($_script_name = self::get_server('SCRIPT_FILENAME')) != null && strpos($_script_name, $_document_root) === 0) {
         self::$_script_url = str_replace('\\', '/', str_replace($_document_root, '', $_script_name));
     } else {
         throw new Base_Exception('[Base.Base_Request._init_script_url] determine the entry script URL failed!!');
     }
 }