0Wordpress LogoWordPress updates progress

I’ve had an issue for a while now where installing word­press updates does­n’t show any mes­sages or pro­gress. The updates gen­er­ally do install but it is tricky to know when the updates have fin­ished. There are a few threads online with pos­sible solu­tions but most of them haven’t been help­ful in my case.

Update: See solu­tion at the bot­tom of this post

When updat­ing plu­gins the fol­low­ing pro­gress mes­sages should be dis­played. In my case they are not show­ing up.

The update pro­cess is start­ing. This pro­cess may take awhile on some hosts, so please be patient.
Enabling Main­ten­ance mode…
Updat­ing Plu­gin plu­gin-name
Down­load­ing update from plugins.
Unpack­ing the update…
Installing the latest version.
Remov­ing the old ver­sion of the plugin…
Plu­gin upgraded successfully.
Akismet updated suc­cess­fully. Show/Hide Details.
Dis­abling Main­ten­ance mode. All updates have been completed.
Actions: Return to Plu­gins page | Return to Word­Press Updates.

This applies to all oth­er updates too, of which there is a full list on the word­press site

Prob­ably the most com­mon cause is PHP zlib com­pres­sion as described by kung­fu­josh on the word­press for­ums. Sadly I already have zlib com­pres­sion set to off so that isn’t my issue.

The issue must be a set­ting in word­press, php-fpm, or nginx some­where but I have been unable to loc­ate it so far.
Update: I have ruled out causes in php.ini and the php-fpm con­fig file using a full test VM. There appear to be mul­tiple nginx set­tings inter­act­ing that are caus­ing the issue for me.

The first set­tings that seem to be rel­ev­ant are the use of gzip and brotli being turned on. This seems to pre­vent the page load­ing pro­gress­ively. It should be easy enough to turn these off for the updates page using a little cus­tom func­tion in word­press that sets the con­tent-encod­ing such that nginx wont com­press the files

/******************************************\
* Disable gzip and brotli for updates page *
\******************************************/
function disable_gzip_brotli() {
header('Content-Encoding: identity');
}

if ( basename($_SERVER["SCRIPT_FILENAME"], '.php') == "update-core" ) {
add_action( 'init', 'disable_gzip_brotli' );
}

Unfor­tu­nately this on it’s own has­n’t proven the solu­tion to my updat­ing issues as some­thing else causes the page to nev­er dis­play any out­put, pro­gress­ive or oth­er­wise. There is anoth­er nginx set­ting that is needed.

After much search­ing I finally iden­ti­fied the issue in my head­ers that are set.

A simple change from add_header X-Frame-Options DENY always; to add_header X-Frame-Options SAMEORIGIN always;

Laat een antwoord achter