Php 内存满时Apache返回200

Php 内存满时Apache返回200,php,apache,server,Php,Apache,Server,通过检查错误日志找到以下内容: PHP致命错误:已耗尽2147483648字节的允许内存大小(尝试分配4096字节) 因此,我尝试在我的本地设置上复制它。因此,我所做的是将内存限制更改为10MB,并尝试手动调用其中一个API。在这种情况下,服务器返回500,这是正确的(即显示上面的错误和500 HTTP状态) 但现在,如果我将其设置为1MB,它将返回200HTTP状态(不处理任何东西,我在第一行有一条简单的消息)。那么背后的原因是什么,如何解决呢 简而言之,如果服务器返回500表示10MB限制,

通过检查错误日志找到以下内容:

PHP致命错误:已耗尽2147483648字节的允许内存大小(尝试分配4096字节)

因此,我尝试在我的本地设置上复制它。因此,我所做的是将
内存限制更改为10MB,并尝试手动调用其中一个API。在这种情况下,服务器返回500,这是正确的(即显示上面的错误和500 HTTP状态)

但现在,如果我将其设置为1MB,它将返回200HTTP状态(不处理任何东西,我在第一行有一条简单的消息)。那么背后的原因是什么,如何解决呢

简而言之,如果服务器返回500表示10MB限制,那么它也应该返回500表示1MB限制,对吗?

如果apache无法处理请求,它是否可能返回默认HTTP状态?如果是,我们如何知道默认HTTP状态以及如何更改该状态?

PHP版本:7.0.33
Apache版本:2.4.39

内存限制为1MB

有10MB的限制

更新 我并没有发布代码,因为我认为它是无关的,因为上面的问题发生在服务器上有太多的流量时,并且发生在我拥有的任何api上。我们有一个代金券销售功能,当它开始时,我们会收到太多的请求,在这段时间内,我们会遇到上面的内存错误,而其他时间我们不会遇到它。所以我的想法是因为可能没有内存来处理请求,因此服务器返回默认值200。为了实现这一点,我在本地设置中将内存限制设置得太低


所以问题是,如果没有内存来处理请求,如何强制服务器返回500。

很可能是PHP在发出内存使用错误之前以200作为响应,当时内存使用率处于中等水平。HTTP状态在任何主体之前通过导线发出


如果将其设置得足够低,则脚本可能无法发出状态和标题。

可能是PHP在发出内存使用错误之前发出了200的响应,当时内存使用率处于中等水平。HTTP状态在任何主体之前通过导线发出


如果将其设置得足够低,您的脚本可能无法发出状态和标题。

我在apache上也遇到了类似的问题。
如果这个api一直不起作用,您是否尝试在干净的apache上启动它



否则,您将使用正确的配置检查有关内存的规则吗?

我在apache上遇到了类似的问题。
如果这个api一直不起作用,您是否尝试在干净的apache上启动它



否则,您将使用正确的配置检查有关内存的规则?

您想解决什么问题?你还没有共享触发致命错误的代码我想知道为什么当内存限制为1M时返回200?让我为我设置的两个内存限制添加屏幕截图。请不要附加屏幕截图,因为你可以用文字表达我之前尝试过但不起作用的内容。你想解决什么问题?你还没有共享触发致命错误的代码我想知道为什么当内存限制为1M时它返回200?让我为我设置的两个内存限制添加屏幕截图。请不要附加屏幕截图,因为你可以用文字表达我之前尝试过但不起作用的内容。如何更改PHP的行为,使其不返回200这种情况吗?您的意思是让PHP知道,将来完成请求需要太多内存?听起来像是幻想曲,我们能改变默认的HTTP吗?因此,即使没有要处理的内存,它也可以返回默认的http状态。在这种情况下,如何更改PHP的行为使其不返回200?您的意思是让PHP知道,将来完成请求将需要太多内存?听起来像是幻想曲,我们能改变默认的HTTP吗?因此,即使没有要处理的内存,它也可以返回默认的http状态。