获取 PHP 网站的根 URL

2024-05-24

我目前正在开发一个 PHP 项目,正在寻找一种方法来获取网站根目录的 URL;我的根目录有一个配置文件,所以我正在考虑使用它来找出“基本 URL”。我正在寻找一种动态执行此操作的方法,以便我可以找到网站根目录的 URL,即http://domain.com/my_app/。我正在尽力避免使用相对路径,并使用 PHP 为我正在使用的任何内容生成 URL。例如,我使用 PHP 生成 CSS 代码,并且 CSS 代码链接到图像,因此我想在此处获取绝对 URL,而不是相对路径。

my_app/
    admin/
        resources/
            css/
                admin-css.php
            imgs/
                login.png
    resources/
        css/
            css.php
        imgs/
            my-image.png
            shared-image.png
    config.php

In my resources/css/css.php文件中,我正在寻找“基本 URL”,以便我可以生成一个绝对 URLimgs文件夹之类的http://domain.com/resources/imgs/my-image.png但目前我正在得到http://domain.com/resources/css/imgs/my-image.png因为下面的定义着眼于获取加载的 PHP 文件的目录,而不是包含的文件。我还想在文件夹之间共享图像(即访问shared-image.png文件来自admin文件夹),因此获取基本 URL 对于生成链接来说是理想的选择。我避免相对路径的原因是因为我有一个创建 URL 的函数,createURL(),这样我就可以让所有 URL 正常工作,而无需硬编码任何内容。

<?php
DEFINE('HTTP_TYPE', $_SERVER['HTTP_X_FORWARDED_PROTO']);
DEFINE('HTTP_ROOT', $_SERVER['HTTP_HOST']);
DEFINE('HTTP_FOLDER', dirname($_SERVER['PHP_SELF']) . '/');
DEFINE('BASE_URL', HTTP_TYPE . "://" . HTTP_ROOT . HTTP_FOLDER);

function createURL($pathFromRoot)
{
    return BASE_URL . $pathFromRoot;
}

所有这些定义都位于我的配置文件中,因此我认为最好的方法是获取配置文件的 URL (http://domain.com/my_app/config.php)并删除“config.php”。请记住,网站可以托管在文件夹结构的更深处http://domain.com/my_app/another/folder/config.php或没有子文件夹http://domain.com/config.php.

这可能吗,如果可以的话怎么办?或者我应该遵循另一种方法?


做了一个之后var_dump of $_SERVER我发现我可以用这个解决方案生成基本 URL,以防有人偶然发现这个问题。我确信还有其他方法,但这对我有用。

<?php
DEFINE('BASE_URL', HTTP_TYPE . "://" . HTTP_ROOT . substr(__DIR__, strlen($_SERVER[ 'DOCUMENT_ROOT' ])) . '/');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 PHP 网站的根 URL 的相关文章

  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多

随机推荐

  • Javascript拆分正则表达式问题

    你好 我正在尝试我认为在 Javascript 中相当简单的正则表达式 但给我带来了很多麻烦 我希望能够通过 javascript 通过 和 分割日期 var date 02 25 2010 var myregexp2 new RegExp
  • 查找 python 数据框中每行的最高值

    我想找到每行中的最高值并返回 python 中该值的列标题 例如 我想找到每行的前两个 df A B C D 5 9 8 2 4 1 2 3 我希望我的输出看起来像这样 df B C A D 您可以使用字典理解来生成largest n数据帧
  • 混合 SOM(带 MLP)

    有人可以提供一些有关如何正确地将自组织映射与多层感知器结合起来的信息吗 我最近读了一些关于这种技术的文章 与常规 MLP 相比 它在预测任务中表现得更好 因此 我想使用 SOM 作为前端 通过对输入数据进行聚类来降维 并将结果传递到 MLP
  • git Push Remote:警告:hooks.mailinglist 有多个值

    我刚刚从使用 gitosis 升级到 gitolite 电子邮件通知适用于所有存储库 但对于 gitolite admin 存储库 我在推送时收到此警告 推送很好 git push remote warning hooks announce
  • 使用 Google 应用引擎接收多文件帖子

    我想从图像上传器接收多文件帖子 我用这个 http www adylevy com index php 2009 07 22 multiple files uploader with preview on client side 大多数示例
  • 访问默认 lambda 参数中的模板类参数

    我正在写一个简单的通用池 模板类在构造函数中采用一个参数 该参数是一个工厂函数 用于根据需要实例化池中的对象 template
  • 从 json 数组中获取成对的值

    首先 这是我从 php 源获取的 json 值 oid 2 cid 107 oid 4 cid 98 oid 4 cid 99 之后 我想要得到并且oid值以及相应的cid值例如 oid 2 and cid 107一口气 oid 4 and
  • Laravel - 重复键批量插入更新大数据集

    我有大约 80k 条记录 每天需要多次运行插入 更新脚本 INSERT INTO my rankings id rank VALUES 1 100 2 99 3 102 80000 3 ON DUPLICATE KEY UPDATE ran
  • PowerShell Get-ChildItem 如何捕获异常

    我目前正在编写一个可视化错误 GUI 它可以在处理时捕获任何异常 并向用户提供 易于理解 的错误消息 但似乎我在使用时无法捕获任何异常Get ChildItemcmdlet 我是否必须使用与 try catch 不同的方法 这是 Power
  • 将“dplyr::across”与具有多个参数的函数一起使用

    我想知道是否有办法使用dplyr across一个需要多个参数的函数 如果没有 如何执行以下操作dplyr tidyverse library dplyr create a dataframe df lt structure list x1
  • 将平面数组拆分为分组子数组,其中包含输入数组中连续键的值

    我有一个数组array diff函数 如下所示 Array 0 gt world 1 gt is 2 gt a 3 gt wonderfull 5 gt in 6 gt our 正如您所看到的 键 3 和键 5 之间有一个间隙 即没有键 4
  • PowerBI区分空白值和0值

    有没有办法区分列中的空白值和列中的 0 值 当我使用 if 语句进行测试时 它们被视为相同的值 有什么建议吗 就在这里 在计算列中 首先测试值是否为空 然后测试是否为零 因此 创建一个标志并通过它过滤您的总和度量 即 No blanks s
  • 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

    我已经使用 Microsoft 查询创建了参数查询 如上所述here https superuser com questions 197453 run an sql query with a parameter from excel 200
  • WCF 缓存解决方案 - 需要建议

    我工作的公司正在寻求实施缓存解决方案 我们托管了多个 WCF Web 服务 并且需要缓存某些可以持久保存和获取的值 无论客户端与服务的会话如何 我正在研究以下技术 缓存应用程序块 4 1 使用 HttpRuntime 缓存的 WCF TCP
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • 不允许循环文件引用。发布 ASP.NET (2.0) 网站

    当我重新 构建 ASP NET 网站时 我没有收到任何错误 然而 当我发布该网站时 它给我一个 不允许循环文件引用 的信息 错误 我在网上读到了一些关于此的内容 它提供了一个batch false 选项 我尝试过但什么也没做 该页面有一个母
  • 我可以删除单个子实体而不加载整个集合吗?

    我有 2 个课程 如下所示 它们可以拥有非常大的集合 一个网站可能有 2 000 多个网站页面 反之亦然 class WebsitePage public int ID get set public string Title get set
  • 如何在 Android 中检查与配对设备的蓝牙连接状态

    我开发了一个蓝牙应用程序 它将连接到配对的设备并发送消息 但我必须先测试连接 我尝试了很多选择 但没有一个效果很好 那么您能给我发送任何可以做到这一点的代码示例吗 我创建了一个线程 但无法获得良好的连接状态来构建 if 函数 这是代码 pa
  • 获取 PHP 网站的根 URL

    我目前正在开发一个 PHP 项目 正在寻找一种方法来获取网站根目录的 URL 我的根目录有一个配置文件 所以我正在考虑使用它来找出 基本 URL 我正在寻找一种动态执行此操作的方法 以便我可以找到网站根目录的 URL 即http domai