【问题标题】:Where can I store logs in PHP app so that they cannot be accessed via HTTP?我在哪里可以将日志存储在 PHP 应用程序中,以便无法通过 HTTP 访问它们?
【发布时间】:2012-09-10 04:40:49
【问题描述】:

对不起,如果这是一个微不足道的问题。

我是 PHP 新手,我正在从头开始创建一个项目。我需要将我的应用程序日志(使用 log4php 生成)存储为文件,并且我不希望它们公开。

它们现在存储在我的 PHP 应用程序文件夹 (/myAppFolder/logs) 下的子文件夹中,因此它们由 Apache 提供服务。

我应该将它们存储在哪里,或者我应该做些什么来防止它们被 Apache 作为内容提供?

【问题讨论】:

  • 简单的答案在 webroot 之外。
  • 如果您在共享主机上并且无法在外部存储文件 - 请尝试使用 htaccess 文件来限制日志文件访问

标签: php apache logging log4php


【解决方案1】:

不在公共根目录下的某个地方!?

这更像是一个服务器配置问题,因为它取决于您的服务器,但在 apache 中,您可以使用自定义日志指令来设置位置,所以如果您有

/www/myapp

创建

/www/log 

然后把它们放在那里。您需要控制配置才能执行此操作,因此请查看您的网络主机文档以了解如何操作。

【讨论】:

    【解决方案2】:

    您可以将它们放在根目录上方的目录中,或者,如果您在共享主机上/由于某种原因无法将文件放在根目录上方,您可以将它们放在拒绝所有 HTTP 访问的目录中.

    所以你可以有一个名为“secret_files”的文件夹,里面有一个.htaccess 文件:

    .htaccess

    deny from all
    

    这将阻止 HTTP 访问该文件夹中的文件/子文件夹。

    【讨论】:

    • “所以它们由 Apache 提供服务。” 就是这样。