Docker 网络服务器总是 returns 状态 200
Docker web server always returns status 200
我在 php:8.0-apache
docker 容器中托管的网络服务器出现问题,总是返回状态代码 200,即使它被设置为不同的值。 容器外的相同代码可以正常工作
我的 php.ini
文件是:
log_errors=On
error_log=/dev/stderr
和php代码是:
... some code ...
http_response_code(400);
exit;
但我收到回复:
HTTP/1.1 200 OK
知道我的设置有什么问题吗?
编辑:
docker 文件:
FROM php:8.0-apache
RUN echo "<?php echo '{some json content}'; http_response_code(400); exit; ?>" >> /var/www/html/index.php
COPY php.ini /usr/local/etc/php/
我想出了问题所在:
当我调用 echo "..."
时,已经发送了状态为 200 的 header,因此 http_response_code(400)
被忽略了。
要解决此问题(以及它在我的电脑上使用默认配置的原因)是将 php.ini
中的 output_buffering
设置为某个值,因此不会立即发送输出。
log_errors=On
error_log=/dev/stderr
output_buffering=4096
我在 php:8.0-apache
docker 容器中托管的网络服务器出现问题,总是返回状态代码 200,即使它被设置为不同的值。 容器外的相同代码可以正常工作
我的 php.ini
文件是:
log_errors=On
error_log=/dev/stderr
和php代码是:
... some code ...
http_response_code(400);
exit;
但我收到回复:
HTTP/1.1 200 OK
知道我的设置有什么问题吗?
编辑: docker 文件:
FROM php:8.0-apache
RUN echo "<?php echo '{some json content}'; http_response_code(400); exit; ?>" >> /var/www/html/index.php
COPY php.ini /usr/local/etc/php/
我想出了问题所在:
当我调用 echo "..."
时,已经发送了状态为 200 的 header,因此 http_response_code(400)
被忽略了。
要解决此问题(以及它在我的电脑上使用默认配置的原因)是将 php.ini
中的 output_buffering
设置为某个值,因此不会立即发送输出。
log_errors=On
error_log=/dev/stderr
output_buffering=4096