wordpress - 在 Apache 上下文中从 bash 脚本调用时,防止 wp-cli 将 gzip'ed 流写入标准输出?
问题描述
这是一个共享主机提供商上的 Wordpress 站点。有一个 3rd 方插件将管理一个临时站点。大部分繁重的工作都是通过 bash 脚本完成的,该脚本对 wp (wp-cli) 进行了大量调用。当我从命令行或在 bash 脚本中运行 wp 时,一切都很好。当脚本在 Web 服务器的上下文中运行时(来自网页的 POST),所有 wp 输出文本都会被 gzip 压缩。
例如,执行以下操作:
INFO=$(wp --info | gunzip)
echo $INFO
将产生正确的结果...但是通过gunzip管道传输所有内容只是愚蠢且不可靠,因为它可能并不总是被gzip压缩...我假设Accept-Encoding: gzip, deflate, br
来自POST的所有内容都会被它运行的所有内容继承。
这是 bash 脚本继承的环境
SERVER_SIGNATURE=Apache Server at example.com Port 443
HTTP_X_HTTPS=1
HTTP_X_REQUESTED_WITH=XMLHttpRequest
SSL_TLS_SNI=example.com
UNIQUE_ID=*****
H2_STREAM_TAG=000
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
HTTP_X_FORWARDED_FOR=174.44.*.*
HTTP_HOST=example.com
HTTP_ORIGIN=https://example.com
SERVER_PORT=443 HTTP_X_REAL_IP=174.44.*.*
PHP_INI_SCAN_DIR=/opt/cpanel/ea-php73/root/etc:/opt/cpanel/ea-php73/root/etc/php.d:.
DOCUMENT_ROOT=/home1/example.com/public_html
HTTPS=on
SCRIPT_FILENAME=/home1/example.com/public_html/wp-admin/admin-ajax.php
REQUEST_URI=/wp-admin/admin-ajax.php
SCRIPT_NAME=/wp-admin/admin-ajax.php
SCRIPT_URI=https://example.com/wp-admin/admin-ajax.php
HTTP_CONNECTION=
REMOTE_PORT=29**
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/bin
HTTP_TE=trailers
SCRIPT_URL=/wp-admin/admin-ajax.php
CONTEXT_PREFIX=
SERVER_ADMIN=webmaster@example.com
PWD=/home1/example.com/public_html
H2_PUSHED=
REQUEST_SCHEME=https
REDIRECT_STATUS=200
HTTP_X_EIG_ORIGIN=162.241.*.*
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
HTTP_REFERER=https://example.com/wp-admin/admin.php?page=staging
HTTP_ACCEPT=*/*
HTTP_DNT=1
REMOTE_ADDR=174.44.*.*
SERVER_NAME=example.com
SHLVL=2
CONTENT_LENGTH=17
no_proxy=1
H2PUSH=on
H2_PUSHED_ON=
HTTP2=on
SERVER_SOFTWARE=Apache
QUERY_STRING=
SERVER_ADDR=162.241.*.*
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/2.0
HTTP_ACCEPT_ENCODING=gzip, deflate, br
CONTENT_TYPE=application/x-www-form-urlencoded; charset=UTF-8
H2_STREAM_ID=
H2_PUSH=on
HTTP_COOKIE=<redacted>
REQUEST_METHOD=POST
CONTEXT_DOCUMENT_ROOT=/home1/example.com/public_html
OLDPWD=/home1/example.com/public_html/wp-admin
_=/bin/env
我不想在网站上禁用 gzip 压缩,这不是一个选项!我只是希望服务器本地的脚本不会在标准输出上取回压缩数据。有任何想法吗?
--TIA
解决方案
unset HTTP_ACCEPT_ENCODING
在 bash 脚本中成功了。它可以防止 wp-cli 继承和使用 gzip 编码。
推荐阅读
- node.js - passport.authenticate 没有被执行
- c++ - lock_guard 导致代码行挂起
- java - 如何修改代号一中工具栏的后退命令按钮(后退箭头)?
- vue.js - 如何在 nuxt vue js 中进行 facebook 登录集成
- node.js - 在 node.js 中使用 LexModelBuildingService 发布 Lex Bot
- date - 查询 Google 表格中的时间戳以查找特定日期但忽略时间
- java - 如何将适当的成本应用于排名选择
- nginx - 如何删除仅适用于 Nginx 服务器的 html php 文件的 url 末尾的 html php 扩展名和斜杠
- c - 英特尔文档中的“受内存屏障保护的可选变量列表”是什么意思?
- laravel - 网站无法在 PC 上访问,但在手机上可以正常工作