从命令行执行获取 Apache 文档根(无浏览器)

2024-06-24

不确定标题是否正确,如果您想到更好的标题,请编辑。

我有一个从命令行调用的 XMLRPC 服务。它使用 Zend 框架。

客户端看起来像这样:

$server = new Zend_XmlRpc_Client('http://主机名/path/to/xmlrpc.server.php');

该文件位于:

/var/www/html/path/to/xmlrpc.server.php

我现在已经对其进行了硬编码,但想一般性地填充“路径/​​到/”。

我试过了:

function url(){
  $protocol = $_SERVER['HTTPS'] ? "https" : "http";
  return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

echo url();

注意:$_SERVER 选项都没有返回我需要的内容

但从命令行执行此命令会给我:

http://

Also getcwd()给我吗:

 /var/www/html/path/to

我怎样才能得到:

http://path/to

有什么想法吗?

我想要这个的原因是如果项目需要更改目录它应该自动配置。例子:

如果我把项目移到这里:

/var/www/html/path/to/another/location

or here:

/var/www/public_html/path/to/another/location

甚至在这里:

/path/to/document/root/path/to/another/location

我应该得到:

http://hostname/path/to/another/location

谢谢你的帮助

UPDATE:

我尝试了这个,但仍然没有按预期工作:

$hostname = `hostname`;
echo 'http://'.trim($hostname).'/'.basename(getcwd())."\n";

简单的回答:你不能。

正如 NikiC 在对您的问题的评论中已经指出的那样,从命令行调用脚本意味着不存在可用的 Web 服务器上下文的概念。 “主机名”和“文档根”的概念仅存在于 Web 服务器上下文中,并且基于服务器的配置。你的里面什么都没有/var/www/something目录显示“嘿,我是文档根目录”。

为了说明这一点,假设您有一个配置有两个虚拟主机的 Apache,使用两个文档根:

  • 虚拟主机A,使用/var/www/top-docroot
  • 虚拟主机B,使用/var/www/top-docroot/nested-docroot.

您的脚本位于:

/var/www/top-docroot/nested-docroot/path/to/xmlrpc.server.php

从命令行调用时,您的脚本应使用什么路径?

  • 虚拟主机 A 会要求nested-docroot/path/to/xmlrpc.server.php
  • 虚拟主机 B 会要求path/to/xmlrpc.server.php

虽然这是一个非常人为的示例,但它仍然应该证明,只有在 Web 服务器请求的上下文中才能可靠地确定文档根,因为它是从配置中读取的。

因此,当从命令行调用时,您的脚本所能做的就是尝试从 Web 服务器配置(也没有可靠的地方)获取信息,或者使用一些启发式方法,例如假设文档根的通用约定居住在/var/www。这两种方法都非常不可靠,并且您最好坚持使用硬编码值(或在调用时将信息作为参数传递)。

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

从命令行执行获取 Apache 文档根(无浏览器) 的相关文章

随机推荐

  • 如何重命名对象 boto3 S3?

    我在 S3 中有大约 1000 个对象 它们以 abcyearmonthday1 abcyearmonthday2 abcyearmonthday3 想要将它们重命名为 abc year month day 1 abc year month
  • 在删除属性之前,必须删除或重新定义所有包含外键的内容 - EF Core

    使用实体框架核心添加外键后尝试添加迁移时出现上述错误 我正在添加FK public class ApplicantDetail Key public int Id get set ForeignKey GrantProgramFK publ
  • 如何在 JSF 中创建现有组件的组合?

    我想知道是否可以编写我自己的组件 或称其为 Widget Object 我的意思是 而不是 例如 使用h panelGroup and a h outputLabel在里面 做我自己的h panelMarkzzz 作为 panelGroup
  • Firefox 中隐藏滚动条

    我想在页面中隐藏滚动条 但我可以像它有滚动条一样滚动 所以我不能使用溢出 隐藏因为我希望我可以像正常一样滚动 但看不到滚动条 所以我使用这个css代码 类not scroll body是一类body标签 not scroll body we
  • 错误 '_' 未定义 no-undef

    我使用 eslint 检查我的代码 并发生错误 错误 未定义 no undef 我这样写代码 new webpack ProvidePlugin jquery jquery jQuery jquery window jQuery jquer
  • MySQL 获取 ORDER BY 中的行位置

    具有以下 MySQL 表 id INT UNSIGNED name VARCHAR 100 我怎样才能选择一个single行及其在表中其他行中的位置 排序时 name ASC 因此 如果表数据按名称排序时如下所示 id name 5 Alp
  • 如何用相同的方法“包装”两个类?

    我必须使用相同的方法处理两个类 但它们不实现相同的接口 也不扩展相同的超类 我无法 不允许更改此类 并且我不构造此类的实例 我只获取此类的对象 避免大量代码重复的最佳方法是什么 班级之一 package faa public class S
  • 如何解释此故障转储

    我们在 iis 中托管的特定网站上遇到了问题 我无法从事件日志中获取太多信息 我对这些低水平的 原始 诊断工具有点不适应 如果我找错了树 在这种情况下请告诉我 例如 IIS 刚刚损坏 或者我是否 我按照正确的路径尝试定位问题 为应用程序池
  • NativeScript + Vue.js + FontAwesome

    我正在尝试使用 FontAwesome 图标集通过 NativeScript 和 Vue js 构建应用程序 但我无法找出问题 因为我什至没有错误提示消息 我忠实地关注文档 但没有任何反应 我到处寻找 但什么也没有 如果你能帮我解决这个问题
  • java应用程序中与oracle的连接

    我已经下载了 oracle express 11g 版本并安装了它 现在我想从 java 应用程序连接它 这是我的连接代码 Class forName oracle jdbc driver OracleDriver newInstance
  • 在 Android @drawable 中查找图像的主色

    如果您使用 Windows 7 您就会明白为什么我要尝试查找图像中的主色 当您将鼠标悬停在任务栏中的某个程序上时 该特定程序的背景会根据图标中的主色发生变化 我注意到其他程序中也使用了这种技术 但我一时想不起来 我可以看到这对我用来开发应用
  • 通过 TCP 查看 h264 流

    我有一个用于无人机的小型基于 wifi 的 FPV 相机 我已经成功地使用 python 下载并保存 h264 文件 TCP IP 193 168 0 1 TCP PORT 6200 BUFFER SIZE 2056 f open stre
  • 访问基模板函数中派生类的成员函数

    我有一堂课叫DBDriver处理与数据库中给定表的通信 它的公共入口点是一个名为的函数模板execute query 它执行 SELECT 查询 调用此函数后 将执行一些数据库逻辑 然后用结果填充提供的容器 模板类型 这看起来像下面这样 c
  • 如何使用终端打开“-”虚线文件名?

    我尝试了 gedit nano vi leafpad 和其他文本编辑器 它无法打开 我尝试了 cat 和其他文件查找命令 我向你保证这是一个文件而不是目录 这种方法有很多误解 因为使用 作为参数指的是标准输入 标准输出 i e 开发 标准输
  • Angular CORS 简单请求通过 POST 中的授权标头触发预检

    根据文档 对于简单的请求 预检不应该发生 https developer mozilla org en docs Web HTTP Access control CORS https developer mozilla org en doc
  • PHPWord - 获取页数?

    我使用 PHPWord 的模板解析器来制作文档 然后使用命令行自动打印该文档 该文件必须在单页上 因为它是证书 并且要打印在特殊纸张上 我添加了人们的名字 这样名字较长的人就可以将一行放到两行上 然后将所有内容推到第二页上 PHPWord
  • SlidingWindows Python Apache Beam 复制数据

    问题 每次系统从带有滑动窗口的 pubsub 收到一条消息时 它都会被复制 The code Parse dictionary gt gt beam Map lambda elem elem Serial int elem Value wi
  • 我应该使用监听器还是观察者?

    我的 GUI 中有一个下拉框 它显示另一个类中 ArrayList 的内容 新对象可以添加到 GUI 中其他位置的 ArrayList 中 因此我需要知道它何时更新 以便刷新下拉菜单 据我所知 我的两个选择是扩展 ArrayList 类以允
  • 无法访问 json 对象属性返回未定义

    我正在从 json 对象访问密钥 但它返回未定义 body Hi date 2016 07 29 07 43 00 var a JSON parse JSON stringify r txt console log a body undef
  • 从命令行执行获取 Apache 文档根(无浏览器)

    不确定标题是否正确 如果您想到更好的标题 请编辑 我有一个从命令行调用的 XMLRPC 服务 它使用 Zend 框架 客户端看起来像这样 server new Zend XmlRpc Client http 主机名 path to xmlr