如何从PHP 获取绝对路径、文档根目录、基本 URL

2023-11-03

根据您的服务器配置,获取正确的路径信息可能具有挑战性。例如,PHP 并没有直接提供一个变量来返回站点基本 URL。以下是一些代码片段,可以帮助您获取绝对路径、文档根目录和基本 URL。

获取绝对路径

如果您的脚本位于 /path/directory/ 目录中,您可以使用以下代码片段来获取绝对路径:

$base_dir = __DIR__;

这将返回类似于下面的内容(具体路径根据实际服务器而定):

/var/www/path/example.com/httpdocs/path/directory

请注意,结果不包含尾部斜杠。

获取文档根目录

获取文档根目录的最简单、最干净的方法是:

$doc_root = $_SERVER['DOCUMENT_ROOT'];

这将返回类似于下面的内容:

/var/www/path/example.com/httpdocs

请注意,结果不包含尾部斜杠。另外,您还可以使用以下方法:

$doc_root = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']);

第一种方式是首选,第二种方式供您参考。

获取当前脚本的基本 URL

以下代码片段将返回当前脚本的基本 URL。假设脚本位于 /path/directory/at/example.com 中。要获取基本 URL,请应用以下代码:

// 基本目录
$base_dir = __DIR__;

// 服务器协议
$protocol = empty($_SERVER['HTTPS']) ? 'http' : 'https';

// 域名
$domain = $_SERVER['SERVER_NAME'];

// 基本 URL
$base_url = preg_replace("!^${doc_root}!", '', $base_dir);

// 服务器端口
$port = $_SERVER['SERVER_PORT'];
$disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";

// 将所有内容组合在一起,以获得完整的基本 URL
$url = "${protocol}://${domain}${disp_port}${base_url}";

echo $url;

这将输出类似于下面的内容:

http://example.com/path/directory

请注意,结果不包含尾部斜杠。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从PHP 获取绝对路径、文档根目录、基本 URL 的相关文章

随机推荐

  • html手风琴效果代码,一款漂亮的纯CSS手风琴效果代码

    本文分享了纯css实现的手风琴 喜欢的朋友可以看看 源码CSS部分 accordionMenu width 500px margin 0 auto padding 10px background size fff color 424242
  • 前端代码深浅拷贝四种方式

    今天公司的实习生有问我代码怎么深拷贝 下面我就给大家整理四种前端代码深拷贝的四种方式 前端数据分为基本数据类型和引用数据类型 当我们拷贝引用数据类型的时候 我们希望改变新数组 对象 不改变原本的数组 对象 我们往往会深拷贝数据 下面是四种深
  • Python paramiko文件传输显示上传下载进度条源码 - stdout

    本文Python Code基于chatGPT的推荐 并修改调试实际运行通过 供学习参考 通过使用python paramiko库 实现文件传输 包括上传和下载 并且同步显示上传和下载进度条信息 实时获取传输进度 避免print方式频繁刷屏困
  • Spring Boot 配置多数据源

    Spring Boot 配置多数据源 作者 Grey 原文地址 博客园 Spring Boot 配置多数据源 CSDN Spring Boot 配置多数据源 说明 本文主要介绍了 Spring Boot 下如何配置多数据源 环境和版本 Ja
  • 静态路由综合实验

    目录 实验要求 实验步骤 1 子网划分 2 配置IP和环回 3 配置静态路由 实现全网可达 4 配置缺省路由 使R1 R4可以访问5 5 5 5 24 5 配置空接口防环 6 ping测试 实验要求 1 除R5的环回地址固定以外 整个其他所
  • 10个最好的 jQuery 视频插件

    在这篇文章中已经收集了10个最佳的jQuery视频插件 帮助开发人员容易地实现网站播放影片功能 可以显示视频和视频播放列表 1 Bigvideo js BigVideo js 是一个jQuery插件能够 让你很方便将视频作为网站的背景 它可
  • FCM算法的matlab实现(Fuzzy C-means 算法)

    FCM算法 F C M FCM FCM算法简介 F C M FCM FCM算法原理 F C M FCM FCM算法实现 m a t l a b matlab matlab F C M FCM FCM算法简介 F C M FCM FCM算法属
  • `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver‘的解决办法

    com mysql jdbc Driver This is deprecated The new driver class is com mysql cj jdbc Driver 的解决办法 说多了都是泪 搭建这个项目遇到的问题太多了 cs
  • Tensorflow中问题总结

    1 ValueError Variable bar v does not exist or was not created with tf get variab le Did you mean to set reuse None in Va
  • 基于Tensorflow卷积神经网络(CNN)的人脸年龄和性别检测系统

    文件大小 150M 开发环境 Python3 7 OpenCV4 0 1 24 Tensorflow1 13 1 PyCharm2020 点击下载 点击下载 简要概述 基于Tensorflow卷积神经网络 CNN 的人脸年龄和性别检测系统
  • Unity BRDF公式解析

    根据BRDF公式 高光项部分 只能物体的表面的粗糙度有关 Roughness有关 大部分公式都是 根据Cook Torrance 的微表面高光BRDF公式 我们把高光分成三项 D项 Normal Distribution Function
  • 正则表达式如何同时添加左右括号 sub_python小课堂24 - 正则表达式(二)

    python小课堂24 正则表达式 二 前言 今天继续来介绍一下python的正则表达式 回顾一下上次介绍的re模块整篇文章围绕着re findall 来进行实例的讲解 也就是所谓的查询操作 为了便于回顾 这里给出链接 python小课堂2
  • 加密文件

    记得不要抄 问题描述 有一种加密方法为 其使用一个字母串 可以含重复字母 字母个数不超过50 作为密钥 假定密钥单词串为feather 则先去掉密钥单词中的重复字母得到单词串feathr 然后再将字母表中的其它字母以反序追加到feathr的
  • Intellij IDEA Diagrams找不到

    问题 利用spring integration配置了并行调用 想利用Intellij IDEA的Diagrams功能生成可视化效果图 但是怎么也找不到Diagrams这个功能 查询了很多解决方法 如添加插件 Settings中设置 利用快捷
  • Jmeter-plugins-manager下载安装和使用

    一 Jmeter plugins manager下载 官网下载地址 Install JMeter Plugins org 点击plugins manager jar就可以下载安装包了 然后把下载的包放入jmeter下面的 lib ext目录
  • matlab中complex的详细用法,Matlab基本函数-complex函数

    1 complex函数 创建复数 2 用法说明 1 z complex x y 函数创建复数z 输入的x y必须同为变量或维数相同 相同数据类型的向量 矩阵或者多维数组 输出的结果跟输入的维数相同 返回值为a b i 2 y complex
  • dubbo提供者源码解析

    一 dubbo配置解析 DubboBeanDefinitionParser类 会解析xml或者注解配置的类 public DubboBeanDefinitionParser Class
  • k8s指南-工作负载(4)

    目录 1 k8s指南 概述 2 k8s指南 架构 3 k8s指南 工作负载 1 4 k8s指南 工作负载 2 5 k8s指南 工作负载 3 6 k8s指南 工作负载 4 7 k8s指南 Service 8 k8s指南 Ingress 9 k
  • RocketMQ-Broker异常恢复后部分队列重新加载已消费消息问题解决

    问题描述 线上Broker所有在主机IO异常 导致Broker异常退出 主机问题解决后 重启Broker 发现group A的几个consumeQueue diff值有几十万 而通过查看日志信息发现该Group的consumeQueue只有
  • 如何从PHP 获取绝对路径、文档根目录、基本 URL

    根据您的服务器配置 获取正确的路径信息可能具有挑战性 例如 PHP 并没有直接提供一个变量来返回站点基本 URL 以下是一些代码片段 可以帮助您获取绝对路径 文档根目录和基本 URL 获取绝对路径 如果您的脚本位于 path directo