[英]PHP - error_log() will not print to file
标题几乎说明了一切。 我一直在全力以赴地努力工作。 我正在创建基于PHP的登录系统,并且需要进行一些调试。 对我而言,目前最有用的是在整个PHP程序中的某些点将调试消息写入文件的功能。 根据文档,这似乎应该是error_log()
要做的事情,但是尽管我尝试了一切,但我还是没有成功。 我在下面尝试过的所有内容的完整列表:
将以下内容添加到/etc/php/7.0/apache2/php.ini
error_reporting = E_ALL display_errors = On log_errors = On
此外,尝试将error_log
设置为/usr/
, /var/www/http/
和/home/
使用ini_set()
和error_reporting()
来设置所有这些变量,包括PHP文件中的error_log
手动创建应该写入的文件,并将其拥有的用户和组设置为www-data
并将其权限设置为777
最后但并非最不重要的一点是,重新安装libapache2-mod-php7.0
和php7.0
,无济于事
基本上,在跳到我预期死亡之前,除了使用笔记本电脑打破办公大楼的第三个故事窗口外,所有其他事情
我真的找不到其他可以在Google上尝试的东西,所以我想请教专家,就在这里。 如果有人可以提供任何建议,将不胜感激。
我猜这些日志已写入sys日志,因为在error_log()中您未提供目标位置。
试试下面的代码
error_log("An error occured", 3, "/var/tmp/my-errors.log");
确保此文件可以由php fpm或www-data读取,具体取决于您的配置,您可以在触摸之前创建它,并使用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文件)
error_log = /var/log/phperrors.log
然后
touch /var/log/phperrors.log
chown www-data: /var/log/phperrors.log
chmod +rw /var/log/phperrors.log
没有奇迹,但是如果仍然set_error_handler()
您可以使用set_error_handler()
编写和注册自己的错误处理程序,您可以在php手册中找到有关如何执行此操作的示例。 它更像是hack,但可以肯定地工作。 如果不这样做,则意味着根本不会触发错误,那么应该在触发错误之前查看是否编辑了正确的php.ini或使用ini_set()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.