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 plu­gins.
Unpack­ing the update…
Installing the latest ver­sion.
Remov­ing the old ver­sion of the plu­gin…
Plu­gin upgraded suc­cess­fully.
Akismet updated suc­cess­fully. Show/Hide Details.
Dis­abling Main­ten­ance mode. All updates have been com­pleted.
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;

Think we've missed something? Let us know by commenting below. If you would like to subscribe please use the subscribe link on the menu at the top right. You can also share this with your friends by using the social links below. Cheers.

Leave a Reply