首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 獲取當前腳本相對於域名根目錄的路徑(Base URL)最佳實踐

     編輯:PHP 綜合知識

場景

網址:https://127.0.0.1/dev/classd/index.php/download
需取得紅框部分:/dev/classd/ 作為站內連結基礎路徑 baseUrl。

核心代碼

// 1. 取得當前腳本相對路徑(如 /dev/classd/index.php)
$scriptName = $_SERVER['SCRIPT_NAME'];

// 2. 取得目錄部分,並統一斜線方向
$baseUrl = str_replace('\\', '/', dirname($scriptName));

// 3. 處理根目錄情況:若為空或 '/',統一返回 '/'
$baseUrl = empty($baseUrl) ? '/' : '/' . trim($baseUrl, '/') . '/';

// 結果:/dev/classd/

關鍵點解析

  • $_SERVER['SCRIPT_NAME']:當前執行腳本的相對路徑(不含查詢字串)
  • dirname():取得目錄部分,Windows 下可能產生反斜線,需 str_replace 修正
  • trim($baseUrl, '/'):移除首尾斜線,避免 //dev//classd// 這類雙斜線
  • 三元運算確保根目錄下返回 / 而非空字串

對比 Zend Framework 做法

ZF 的 baseUrl() 經過多層類別封裝、多次 $_SERVER 判斷,效能較差。本方法僅三行核心代碼,效能極高,足應付 99% 場景。

進階:支援子目錄部署

若專案部署在 /subdir/,上述邏輯自動適配,無需額外配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved