PHP-错误日志()将不会打印到文件

PHP-错误日志()将不会打印到文件,php,debugging,Php,Debugging,标题几乎说明了一切。我一整天都在拼命想把这件事做好。我正在创建一个基于PHP的登录系统,需要进行一些调试。现在对我来说最有用的是能够在整个PHP程序中的特定点将调试消息写入文件。根据文档,这似乎是error\u log()应该做的,但是尽管我做了很多尝试,但我还是没有成功。我尝试过的所有方法的完整列表如下: 将以下内容添加到/etc/php/7.0/apache2/php.ini error_reporting = E_ALL display_errors = On log_errors =

标题几乎说明了一切。我一整天都在拼命想把这件事做好。我正在创建一个基于PHP的登录系统,需要进行一些调试。现在对我来说最有用的是能够在整个PHP程序中的特定点将调试消息写入文件。根据文档,这似乎是
error\u log()
应该做的,但是尽管我做了很多尝试,但我还是没有成功。我尝试过的所有方法的完整列表如下:

  • 将以下内容添加到
    /etc/php/7.0/apache2/php.ini

    error_reporting = E_ALL
    display_errors = On
    log_errors = On
    
  • 此外,尝试将
    错误日志设置为
    /usr/
    /var/www/http/
    /home/
    中的位置

  • 使用
    ini\u set()
    error\u reporting()
    在PHP文件中设置所有这些变量,包括
    error\u log

  • 手动创建要写入的文件,并将其所属用户和组设置为
    www-data
    ,将其权限设置为777

  • 最后,重新安装
    libapache2-mod-php7.0
    php7.0
    ,但没有效果

  • 基本上,除了在跳楼自杀前用我的笔记本电脑打破我办公楼三层的窗户之外,其他的一切都可以做到


我真的找不到其他东西可以在谷歌上试用,所以我想我应该问问专家,我来了。如果有人能提供任何建议,我们将不胜感激。

我想日志是写入sys日志的,因为在错误日志()中,您没有提供目的地

请尝试以下代码

error_log("An error occured", 3, "/var/tmp/my-errors.log");
确保此文件可以由php读取fpm或www数据,具体取决于您的配置。您可以在使用touch之前创建此文件,并使用chmod手动添加权限

3表示目标是一个文件

如果您使用apache,请在httpd.conf或任何其他位置(v)中检查错误日志的位置

ErrorLog "/var/log/apache2"
然后检查此文件是否具有以下用户组,如
ls-la
ll

 -rwxrwxr-x 1 www-data www-data 
应该会出现这样的情况

另一个选项是在适当的php.ini中设置以下内容(CLI和apache具有不同的php.ini文件)

然后


没有奇迹,但如果它仍然不起作用,您可以使用
set\u error\u handler()编写并注册您自己的错误处理程序
您可以在中找到如何执行此操作的示例。它更像是hack,但肯定会起作用。如果不会,则意味着根本不会触发错误,那么您应该查看是否编辑了正确的php.ini或使用了ini_set()在触发错误之前。

它们不是被发送到系统日志吗?是否使用error\u log的第三个参数$destination?我会仔细检查php运行的用户和组。php可能没有更新文件的权限。@Robert我们查看了/var/logs,但找不到任何内容。我们确实使用了error的第三个参数_log.create any file with php script并查看哪个用户使用“LS”创建了该文件,然后检查该用户是否有权在您给定的目录中写入/创建日志文件。我的错误是,这是我忘记添加到初始问题的一件事。我们也尝试过,但结果相同。
 error_log = /var/log/phperrors.log 
 touch /var/log/phperrors.log
 chown www-data: /var/log/phperrors.log
 chmod +rw /var/log/phperrors.log