通过检查错误日志,可以在下面找到:
PHP致命错误:允许内存大小为2147483648字节耗尽(试图分配4096字节)
所以我试着在我的本地装置上复制。因此,我所做的就是将memory_limit
更改为10 MB,并尝试手动调用其中一个API。在这种情况下,服务器返回500,这是正确的(即用500 HTTP状态显示上面的错误)。
但是现在如果我将它设置为1MB,那么它返回200个HTTP状态(没有处理任何事情,我在第一行上有一个简单的消息)。那么,它背后的原因是什么,以及如何解决呢?
简而言之,如果服务器以10 MB的限制返回500,那么它也应该返回500作为1MB的限制,对吗?。
是否可能在无法处理请求的情况下返回默认的HTTP状态?如果是,我们如何知道默认的HTTP状态,以及如何更改它?
PHP版本: 7.0.33
Apache版本: 2.4.39
内存限制为1MB
10 MB的限制
更新
我没有发布代码,因为我认为这是不相关的,因为上面的问题发生在服务器上有太多流量时,并且发生在我所拥有的任何api上。我们有一个代金券销售功能,当它开始,我们收到太多的要求,在这段时间,我们面临以上的记忆错误,其他时候,我们没有面对它。所以我的想法是因为可能没有内存来处理请求,因此服务器返回默认值200。为此,我在本地设置中将内存限制设置得太低。
因此,如果没有内存来处理请求,那么问题是如何强制服务器返回500。
发布于 2020-08-15 11:47:22
在PHP发布关于适度高内存使用的错误之前,PHP可能会发出200的响应。HTTP状态在任何主体之前都会通过线路发出。
如果您将其设置得足够低,那么您的脚本可能还不够远,无法发出状态和标头。
发布于 2020-08-20 16:45:47
我对apache也有类似的问题。
您是否尝试过在干净的apache上启动这个api,如果它一直不能工作呢?
否则,您是否检查了有关内存的规则和正确的配置?
https://stackoverflow.com/questions/63356995
复制相似问题