php服务500错误日志,PHP – 尝试使用error_log()进行日志记录导致500错误

我有一个IIS服务器,通过fastcgi服务PHP.

当IIS_IUSRS组(IIS用户正在运行的组)中的用户写入错误日志文件时,IIS将无法写入该文件,并且对error_log()的PHP调用将导致500错误. (至少那是我的猜测,好像我删除了日志文件,错误消失并重新创建了日志文件).

无论如何我可以阻止500错误发生吗?

编辑:要清楚我知道我可以通过停止记录,记录到事件日志或不同位置等来阻止这一点,但这不是我的意思.我的意思是我只是想防止500错误,我不在乎我的系统无法记录它应该在尝试时破坏网站.这正是它可能产生的最糟糕的行为.我只是想要500错误没有发生,网站继续工作.

解决方法:

由于您的计划任务实际上正在更改错误日志文件的权限,因此我可以看到的唯一可行选项是:

1)使计划任务不写入error_log.将以下内容添加到cron作业的顶部:

使用error_reporting(E_NONE);

2)通过在计划任务(PHP文件)开始时发出以​​下命令,使计划任务写入系统日志(Windows中的事件查看器):

ini_set(‘error_log’,’syslog’);

3)如果以上所有内容都不适合您,您可以尝试将任务安排为IIS用户/组.这将确保满足权限并且不再导致错误500.

没有神奇的解决方法,您可以更改计划任务,使其具有与PHP进程相同的UID / GID,或者您可以停止登录scheduled_task.

标签:php,permissions,iis

来源: https://codeday.me/bug/20190901/1783661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 中,error_log 函数可以用来记录错误、警告和调试信息。它的语法如下: ``` void error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) ``` 其中: - `$message` 表示要记录的信息,可以是字符串或者数组。 - `$message_type` 表示信息类型,可选值如下: - 0:将信息写入到 PHP 错误日志中(默认值)。 - 1:将信息发送到指定的邮件地址。 - 2:将信息写入到指定文件中。 - 3:将信息发送到 SAPI 日志处理程序。 - `$destination` 表示信息写入的目标,当 `$message_type` 的值为 1 或 2 时,需要指定该参数。当 `$message_type` 的值为 1 时,该参数表示邮件地址;当 `$message_type` 的值为 2 时,该参数表示文件路径。 - `$extra_headers` 表示额外的邮件头信息,当 `$message_type` 的值为 1 时,可以使用该参数设置额外的邮件头信息。 示例: ``` // 记录错误日志到系统日志error_log('This is an error message.'); // 将错误信息写入到指定文件中 error_log('This is an error message.', 3, '/path/to/error.log'); // 将警告信息发送到指定邮件地址 error_log('This is a warning message.', 1, 'admin@example.com', 'From: webmaster@example.com'); ``` error_log 函数还可以用于调试,例如记录变量的值: ``` // 记录变量的值到错误日志error_log(print_r($my_var, true)); ``` 注意:使用 error_log 函数记录敏感信息时,需要确保写入的目标文件有足够的权限,避免信息泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值