CakePHP内部服务器仅对某些用户出错,清除缓存后消失
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CakePHP内部服务器仅对某些用户出错,清除缓存后消失相关的知识,希望对你有一定的参考价值。
我的一些使用Google Chrome或Firefox的用户遇到内部服务器错误,一旦他们清除了我的网站的缓存,错误就会消失。我在一年多前遇到过这个问题,但转向另一个“固定”它的主机,但现在问题又回来了。
这是最近完成的事情(不确定是否有任何一个,全部或全部都没有):
- 升级的Cakephp(从2.8.9升级到2.10.7)
- 将PHP Config从php5.6更改为默认+ CLI和php7.0专用于Web角色到php 7.0用于所有内容(这是防止fpm进程的套接字在重新启动时发生冲突和崩溃所必需的)
当然我可以告诉我的用户清除他们的缓存,但我也想了解可能导致这种情况的原因或可能导致这种行为的可能性(由于只有一些用户受到影响,因此很难调试)。
答案
1 - 检查您的日志。如果没有任何错误日志,则启用服务器上的日志记录。查看https://book.cakephp.org/3.0/en/core-libraries/logging.html以使用CakePHP日志记录,或检查服务器的文档以启用服务器上的日志记录。
2 - 您可以尝试使用try / catch块将错误发送给用户,然后用户可以向您提供更具体的错误消息。进入主PHP文件并包装所有内容
try {
...... (your PHP code here) ......
} catch(Exception $e) {
die($e->getMessage());
}
如果错误与PHP可以捕获的异常有关,则错误消息将回显给用户。如果您不想将其回显给用户(可能存在一些安全问题),那么您可以将$e->getMessage()
写入日志文件,以便只有您可以看到它。
另一答案
似乎是PHP会话的错误:
- 当用户清除其cookie时,它会被修复,并且可能在PHP版本更新时发生。
- 某些会话错误仅在确定的时间之后发生,并且可能更随机。
- 它可能发生在你的代码的任何一点(这可以使调试更加困难!)。
- 更改托管时修复。(新服务器意味着新的或默认的会话配置) 修改您的PHP会话配置和CakePHP会话配置(可能将其添加到问题可能有帮助)。 ¿您使用的是Memcached还是类似的?
以上是关于CakePHP内部服务器仅对某些用户出错,清除缓存后消失的主要内容,如果未能解决你的问题,请参考以下文章