【问题标题】:Accessing root files with apache2使用 apache2 访问根文件
【发布时间】:2014-02-12 14:20:04
【问题描述】:

我的 apache2 服务器访问日志文件位于 /var/log/apache2/access.log

该位置归root:root所有。

我想做的是编写我自己的服务器状态代码(VirtualHost 提供一个 .php 文件),它会解析 access.log 并显示一些服务器统计信息。

如何使我的脚本/VirtualHost 可以访问 access.log 文件,但不能让服务器上的其他站点访问?

【问题讨论】:

    标签: php apache2


    【解决方案1】:

    我建议您重新配置(虚拟主机)实例(如果可能)以登录到文件系统上的备用位置。

    在您的 *.conf 文件(位于 /etc/httpd/ 或 /etc/apache2/ 的子目录)中,只需将日志修改为您选择的目的地:

    ErrorLog /var/www/{domain}/logs/{domain}-error.log
    CustomLog /var/www/{domain}/logs/{domain}-access.log combined
    

    然后通过运行验证这些更改(以及您可能进行的任何其他更改):

    sudo /etc/init.d/httpd configtest
    

    然后重启你的网络服务器:

    sudo /etc/init.d/httpd restart
    

    这将允许您更改(取决于您的设置)文件登录的位置,并使 VirtualHost 可以访问前面提到的文件,并保持其他虚拟主机不变 - 前提是这些虚拟主机没有更改。只需确保此目录属于正确的组并包含访问它的脚本的正确权限。

    我建议您使用上面提供的位置以外的另一个位置,因为这只是一个示例。

    我建议不要更改 /var/log 权限的原因

    “/var/log”目录包含与您的操作系统相关的明确详细信息,并且通过更改权限,您还可能使“外部人员”能够访问关键信息,而这些信息又可能被用来破坏您的系统。

    最好保持此文件夹/目录的权限不变。

    【讨论】:

      【解决方案2】:

      您可以将/var/log/apache2/ 的读取和执行权限授予其他人,并为/var/log/apache2/access.log 授予其他人的读取权限,然后在将显示服务器状态的 php 脚本中使用以下代码获取 access.log 文件的内容:

      $access = shell_exec("cat /var/log/apache2/access.log");
      

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        相关资源
        最近更新 更多