Запретить wp-cli записывать gzip-поток в стандартный вывод при вызове из сценария bash в контексте Apache? - PullRequest
0 голосов
/ 28 мая 2020

Это сайт Wordpress на провайдере виртуального хостинга. Существует сторонний плагин, который будет управлять промежуточным сайтом. Большая часть тяжелой работы выполняется с помощью сценария bash, который делает много вызовов wp (wp-cli). Когда я запускаю wp из командной строки или в сценарии bash, все в порядке. Когда сценарий запускается в контексте веб-сервера (POST с веб-страницы), весь выходной текст wp архивируется.

Например, выполнение чего-то вроде:

INFO=$(wp --info | gunzip)
echo $INFO

даст правильный результат ... но передавать все через gunzip просто глупо и ненадежно, потому что он не всегда может быть сжат ... Я предполагаю, что 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

1 Ответ

0 голосов
/ 28 мая 2020

unset HTTP_ACCEPT_ENCODING в сценарии bash сработало. Это предотвращает наследование и использование wp-cli кодировки gzip.

...