如何按文件夹设置error_log?
Posted
技术标签:
【中文标题】如何按文件夹设置error_log?【英文标题】:How can I set up error_log by folder? 【发布时间】:2012-05-17 00:12:31 【问题描述】:我公司有一个大型主机,但不是我们管理的,我们看不到配置文件,但我想在我们本地测试服务器上回复这个功能。
我是公司的新人,想开始调试应用程序以解决客户的一些次要问题和主要问题,但是文件量太大以至于单个 error_file 是巨大的..并且有很多人在做这个,所以每次我检查日志(比如 30 秒到 1 分钟)都会添加数百行。
我不知道这是在 Apache 上,通过 .htaccess 文件还是在 php.ini 中设置的。
我说的是PHP错误,但我不知道这是在PHP、Apache中设置的,还是使用第三方库。
我不是在谈论设置特定文件夹 error_log。我说的是脚本文件夹中是否记录了错误。
示例:我创建了一个名为 test1 的文件夹。在里面我做了一些错误的 PHP 脚本,它会抛出一些错误。当我运行脚本时,我可以看到文件夹中创建了一个 error_log 文件。所以它可以即时运行。
我试图询问托管公司的支持他们是如何做到这一点的,但他们没有回答我。
我不知道是否可能是某种cPanel 设置(顺便说一句,托管支持的东西也不理解这个问题,但是……通常 1 级支持无法处理技术问题) .
【问题讨论】:
您说的是 PHP 错误,而不是 Apache 错误,对吗? 【参考方案1】:我找到了。
您必须在 php.ini 文件中设置如下指令,字符串“error_log”。右边是你想要的日志文件名,
error_log = error_log
这将在执行脚本的文件夹中生成一个 PHP 错误日志,
我会尽力解释。
在文件夹 /www/site/lib 中编写脚本 test.php:
include "./db_conn.php";
如果文件 db_conn.php 不在同一目录中,则会触发警告和错误。通常这将导致服务器/虚拟主机日志,但使用此指令您将在 /www/site/lib 目录下获得一个 error_log 文件。
我为什么要找这个?好吧,正如我所写的,我正在开发一个巨大的应用程序,其中包含数千个文件,许多文件会发出警告、通知等。我不是项目中唯一的一个,站点 error_log 文件是如此庞大,很难跟踪一个或几个文件的调试演变。现在我只需要跟踪我正在工作的目录中的日志。
【讨论】:
第二个“error_log”令人困惑(不管有什么解释)。是字面的还是非字面的?如果没有,您可以选择其他名称吗? (但没有“编辑:”、“更新:”或类似的 - 问题/答案应该看起来好像是今天写的。)【参考方案2】:您可以通过将其添加到您的 vhost 或 htaccess 文件中来管理日志
ErrorLog /path/to/a/writable/directory/error.log
有关更多信息,请查看此article on advanced PHP error handling via htaccess。
【讨论】:
我知道如何通过 vhost 设置 errror_log,我正在寻找如何在每个文件夹中获取日志,因此我只能看到该文件夹上的脚本错误【参考方案3】:要在 PHP 中执行此操作,请编辑文件 php.ini 并添加行
error_log = /path/to/where/you/want/your/php-errors.log
然后重新启动网络服务器。这应该会给您该文件的 PHP 错误,并且只有 PHP 错误。当然,前提是编写脚本不是为了消除所有错误。
要在 Apache 中执行此操作,您可以使用 SetEnvIf 向任何以 PHP 结尾的请求添加环境变量,然后使用该特定环境变量打印所有日志。例如:
SetEnvIf Request_URI "\.php$" phplog
CustomLog /path/to/php.log env=phplog
要在多个文件夹中使用它,请为每个文件夹创建一个环境变量,每个文件夹创建一个 CustomLog,如下所示:
SetEnvIf Request_URI "/folder1/.*\.php$" log_folder1
Customlog /path/to/folder1/php.log env=log_folder1
SetEnvIf Request_URI "/folder2/.*\.php$" log_folder2
Customlog /path/to/folder2/php.log env=log_folder2
【讨论】:
这是将php错误重定向到单个自定义文件的正确方法,但这不是我所要求的,无论如何谢谢 在那种情况下,我只能说我不知道你想要什么。我不明白您所说的“错误记录在脚本文件夹中”是什么意思。如果您的意思是希望将特定文件夹中的所有脚本记录到该特定文件夹中的文件中,那么您仍然可以使用 SetEnvIf 执行此操作,方法是根据所在文件夹设置环境,然后为每个文件夹设置一个 CustomLog .但这会给你 Apache 日志,而不是 php 日志。 我的意思是脚本生成的错误会一直记录在脚本所在文件夹中的 error_log 文件中,而每个文件夹都没有规则,我想从我的托管公司回复或复制此行为,但是他们没有告诉我这是如何工作的,但它确实如此,如果在里面创建一个新文件夹和一个新文件并且这会产生这样的错误。自动在这个新文件夹上创建 error_log 并在其中登录,但我不知道,如果它发生是因为 apache 或 php 或 Cpanel 配置我不知道,那就是我正在寻找的以上是关于如何按文件夹设置error_log?的主要内容,如果未能解决你的问题,请参考以下文章