php - PHP 可以读取/解析当前虚拟主机的 Apache VirtualHost 配置 block ,以检索 ErrorLog 和 CustomLog 设置吗?

标签 php apache virtualhost error-log

PHP 是否可以读取/解析当前虚拟主机的 Apache VirtualHost 配置 block ,特别是检索 ErrorLog 和 CustomLog 设置?

需要说明的是,我们不需要 PHP 错误日志路径,这很容易检索。

我在phpinfo 中找不到任何方法|或 _SERVER/getenv()或 PHP Apache 函数(apache_module()apache_note()apache_getenv())

代码库用于多个服务器上的多个虚拟主机,因此我们不能在 PHP 中(或在 .htaccess SetEnv 或某些 ini/csv/任何文件等)中硬编码 Apache 访问和错误日​​志路径,因为它可能并不总是与 <VirtualHost> 中的设置相匹配- 运营人员可能会更新 VirtualHost,但开发人员可能不会更新代码或代码用于查找相同路径的任何内容。我们不能在 CustomLog 行下方或上方设置具有相同值的 SetEnv,因为仍然有可能在没有另一个的情况下更新一个(人为错误等)。

我最大的希望是 apache_getenv()但我试过了apache_getenv('CustomLog')它不返回任何东西。

可以运行一系列 system()/exec()调用运行 cli 函数来查找它们,但并不理想。

ServerName可能与当前调用的虚拟主机不匹配,如 ServerAlias可能有一个包含正则表达式的不同虚拟主机,因此一旦找到 Apache conf 的路径,手动 grep 遍历文件并不理想/可靠。

Apache 2.2.16 (Unix) PHP 5.3.3 CentOS 5.5 版(最终版)

请告诉我我错过了一些明显的东西;)

最佳答案

这有点hackish,但你可以把

ErrorLog /path/to/logfile
SetEnv ErrorLog /path/to/logfile

在您的 httpd.conf 中,因此您可以使用 apache_getenv() 函数。 getenv() 不检索配置指令,只检索实际的环境变量。所以.. 将日志路径放入环境变量中。

关于php - PHP 可以读取/解析当前虚拟主机的 Apache VirtualHost 配置 block ,以检索 ErrorLog 和 CustomLog 设置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587083/

相关文章:

java - 使用 httppost 将文件上传到 apache 服务器

linux - 未检测到/etc/hosts 配置

django - 无法从公共(public) IP 访问我的 AWS Lightsail Django 应用程序

php - 如何使用 PHP 限制数据库中 html 表格中每行的单元格数量

apache - 如何仅通过外部 ip 启用基于 HTTP 的身份验证请求?

apache2 - Apache vhost 一网打尽

macos - MAC OS X : MAMP Environment & Virtual Hosts

php - 弹出窗口在 IE 6 中不显示

php - Sphinx搜索的数据库定义

javascript - 当您有多个同名类时,使用 jQuery 选择特定类