php - 执行 PHP 脚本来处理 Apache2 的 ErrorDocument 500
问题描述
我正在使用 PHP-FPM 来托管一个繁忙的网站。我通过 PHP-FPM 代理提供所有 php 和 html 页面。对于 500 个错误,我想通过托管在同一服务器上的另一个 PHP 脚本向所有利益相关者发送电子邮件,其中包含 URL、其查询字符串和 cookie。
然而ErrorDocument 500 /report/webmaster/dp-server-error.php
,在虚拟主机内部添加会导致重定向循环到错误脚本,即 dp-server-error.php。作为解决方法,我在虚拟主机文件中做了类似的事情,它可以工作。
ProxyPassMatch ^/(.*\.(php|html)(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/example.com/
ProxyErrorOverride On
ErrorDocument 500 https://www.example.com/report/webmaster/dp-server-error.php?page=%{REQUEST_URI}?%{QUERY_STRING}&cookies=%{HTTP:Cookie}
但是,解决方法存在一些问题。cookie 可能超过 URL 中的有效字符数。该 URL 可能会被其中一个爬虫注意到,并且爬取该 URL 可能会发送错误的电子邮件警报。我希望 ErrorDocument 在不使用完整域名的情况下正常工作。我想知道如何避免重定向循环。也使用
ProxyPass /report/webmaster/dp-server-error.php !
避免重定向循环是不可接受的,因为在发送电子邮件进行进一步分析之前,我无法使用现有的 PHP 框架对错误进行详细分析。
解决方案
推荐阅读
- apache-spark - org.apache.hadoop.mapred.TaskAttemptListenerImpl:TaskAttempt尝试的进度_1537255103946_84288_m_000000_0
- r - R:计算室 N2O 通量测量的关闭时间
- android - 在离线模式下运行 libgdx 项目(gradle-project)
- reactjs - React 组件相互重叠(MaterialUI)
- linux - 我在 /sites/default/files/ 中的 tmp 文件夹在 DRUPAL 7 中不会自动清除
- python - 按每个列表中的第二个元素对列表字典进行排序
- javascript - 使用 redux 初始化全局状态,然后让本地组件状态接管
- javascript - 根据值处理 JSON 对象/数组
- django - Django 2.1,如何在模板中显示外键值?
- hyperledger-fabric - 超级账本结构多主机设置中的错误