PHP 5.6 is the intended version from WordPress 5.1

Quick Highlights:

Warning about outdated PHP version in WordPress backend

  • Provided filter wp_update_php_url for a more dynamic approach on the code level. Replacing the URL should happen in cases where a more specific guide to update PHP on the given environment exists. E.g. screenshot:
Warning about outdated PHP version with custom URL and related annotation

  • Fatal Error Protection with the so-called WSOD protection (white-screen-of-death protection), A mechanism has been implemented to detect fatal errors and, in certain designated areas of WordPress, recover from them. E.g. Screenshot.
Default output in the frontend when WSOD protection detects has detected an error

Note that, while the primary reason for implementing the fatal error protection mechanism was making the process of updating PHP less “dangerous”, it is technically not tied to the update at all. In fact, it will be enabled permanently and discover fatal errors under any circumstances.

  • The functionality can also be disabled entirely if that is preferred, via a new constant WP_DISABLE_FATAL_ERROR_HANDLER or, more dynamically, a corresponding wp_fatal_error_handler_enabled filter.

  • WordPress 5.1 will display a warning for those plugins that require a higher PHP version than the one currently active.


PHP Date and Time format with examples and descriptions

Date Examples:

15/02/19d/m/ydate( ‘d/m/y’ )
15-Feb-2019d-M-Ydate( ‘d-M-Y’ )
15 February 2019d F Ydate( ‘d F Y’ )
15th February 2019dS F Ydate( ‘dS F Y’ )
Feb, 15th 2019M, dS Ydate( ‘M, dS Y’ )

Time 12 hrs Examples:

05:36 pmh:i adate( ‘h:i a’ )
05:36 PMh:i Adate( ‘h:i A’ )
05:36:18 pmh:i:s adate( ‘h:i:s a’ )
05:36:18 PMh:i:s Adate( ‘h:i:s A’ )

Time 24 hrs Examples:

17:36 pmH:i adate( ‘H:i a’ )
17:36 PMH:i Adate( ‘H:i A’ )
17:36:18 pmH:i:s adate( ‘H:i:s a’ )
17:36:18 PMH:i:s Adate( ‘H:i:s A’ )

Date & Time Examples:

15-02-2019 05:36:18 pmd-m-Y h:i:s adate( ‘d-m-Y h:i:s a’ )
15-Feb-2019 05:36:18 pmd-M-Y h:i:s adate( ‘d-M-Y h:i:s a’ )
15 February 2019 05:36 pmd F Y h:i adate( ‘d F Y h:i a’ )

All format with example and description:

d15d – The day of the month (from 01 to 31)
DFriD – A textual representation of a day (three letters)
j15j – The day of the month without leading zeros (1 to 31)
lFridayl (lowercase ‘L’) – A full textual representation of a day
N5N – The ISO-8601 numeric representation of a day (1 for Monday, 7 for Sunday)
SthS – The English ordinal suffix for the day of the month (2 characters st, nd, rd or th. Works well with j)
w5w – A numeric representation of the day (0 for Sunday, 6 for Saturday)
z45z – The day of the year (from 0 through 365)
W07W – The ISO-8601 week number of year (weeks starting on Monday)
FFebruaryF – A full textual representation of a month (January through December)
m02m – A numeric representation of a month (from 01 to 12)
MFebM – A short textual representation of a month (three letters)
n2n – A numeric representation of a month, without leading zeros (1 to 12)
t28t – The number of days in the given month
L0L – Whether it’s a leap year (1 if it is a leap year, 0 otherwise)
o2019o – The ISO-8601 year number
Y2019Y – A four digit representation of a year
y19y – A two digit representation of a year
apma – Lowercase am or pm
APMA – Uppercase AM or PM
B775B – Swatch Internet time (000 to 999)
g5g – 12-hour format of an hour (1 to 12)
G17G – 24-hour format of an hour (0 to 23)
h05h – 12-hour format of an hour (01 to 12)
H17H – 24-hour format of an hour (00 to 23)
i36i – Minutes with leading zeros (00 to 59)
s18s – Seconds, with leading zeros (00 to 59)
u000000u – Microseconds (added in PHP 5.2.2)
eUTCe – The timezone identifier (Examples: UTC, GMT, Atlantic/Azores)
I0I (capital i) – Whether the date is in daylights savings time (1 if Daylight Savings Time, 0 otherwise)
O+0000O – Difference to Greenwich time (GMT) in hours (Example: +0100)
P+00:00P – Difference to Greenwich time (GMT) in hours:minutes (added in PHP 5.1.3)
TUTCT – Timezone abbreviations (Examples: EST, MDT)
Z0Z – Timezone offset in seconds. The offset for timezones west of UTC is negative (-43200 to 50400)
c2019-02-15T17:36:18+00:00c – The ISO-8601 date (e.g. 2013-05-05T16:34:42+00:00)
rFri, 15 Feb 2019 17:36:18 +0000r – The RFC 2822 formatted date (e.g. Fri, 12 Apr 2013 12:01:05 +0200)
U1550252178U – The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

Get WooCommerce store notifications and key metrics on Android and iOS app powered by Jetpack

Great news for WooCommerce store owner. Your WooCommerce Store In Your Pocket.

Manage your orders, receive sales notifications, and view key metrics wherever you are.

Get the mobile app:

The WooCommerce app is powered by Jetpack. Learn how to connect to your store.

Available now for Android and iOS.

Fix: EventSource’s response has a charset (“iso-8859-1”) that is not UTF-8. Aborting the connection.

The issue is with the mismatch charset. You have default charset charset : iso-8859-1 and you are trying to use content which have charset=UTF-8.

To fix the error you need to set the charset=UTF-8 in which you have set the header. In my case, I have fix the error by setting the charset=UTF-8 in header. Check below code for reference:

header( 'Content-Type: text/event-stream, charset=UTF-8' );

I have created the PR for this fix for WordPress Importer created by


Setup WP CLI (WordPress Command Line Interface) on Windows Operating System

Step 1

Create folder wp-cli in C drive.

Step 2

Download wp-cli.phar from

Step 3

Move downloaded wp-cli.phar file in C:\wp-cli\

Step 4

Create wp.bat file in C:\wp-cli\ and write below code in it.

php "C:\wp-cli\wp-cli.phar" %*

Or download file from gist

Step 5

Open system environment and set C:\wp-cli as environment path.


Open Command Prompt and type command wp and press Enter. It’ll show you the like the below screenshot.

Fix: WooCommerce – Sorry, this file type is not permitted for security reasons.


Add below filter to fix the file permission issue of WooCommerce.

The reason of this issue is:

Getting different REAL MIME type from function finfo_file.

The issue maybe the different Operating Systems or due to Different PHP versions.

But, While debugging the issue, When I try to upload the XML on localhost I got the text/xml as a real MIME type and on live site its application/xml.

Below is the debugging steps:

File: /wp-includes/functions.php line 2346

// Validate files that didn't get validated during previous checks.
if ( $type && ! $real_mime && extension_loaded( 'fileinfo' ) ) {
	$finfo = finfo_open( FILEINFO_MIME_TYPE );
	$real_mime = finfo_file( $finfo, $file );
	finfo_close( $finfo );

	echo '<pre>';
	var_dump( FILEINFO_MIME_TYPE ) . '<br/>';
	var_dump( $finfo ) . '<br/>';
	var_dump( $file ) . '<br/>';
	var_dump( $real_mime ) . '<br/>';

The output of the above code is below on LOCALHOST:

  • PHP: Version 7.2.4
  • System: Windows NT M 6.3 build 9600 (Windows 8.1 Professional Edition) i586
resource(767) of type (Unknown)
string(46) "C:\Users\Yum\AppData\Local\Temp/wxr-LccAYF.tmp"
string(8) "text/xml"

But, It is different on the LIVE site.

  • PHP: Version
  • System: Linux ip-172-31-25-204 4.4.0-134-generic #160-Ubuntu SMP Wed Aug 15 14:58:00 UTC 2018 x86_64
resource(747) of type (Unknown)
string(19) "/tmp/wxr-YNkiH5.tmp"
string(15) "application/xml"

Testing on different PHP versions:

PHP Code

echo 'PHP Version: ' . phpversion() . "<br/><br/>";
echo 'file.vtt | ' . mime_content_type( 'file.vtt') . "<br/>";
echo 'file.xml | ' . mime_content_type( 'file.xml') . "<br/>";

On Localhost – PHP Version: 7.2.4

PHP Version: 7.2.4
file.vtt | text/plain
file.xml | text/xml

On Live – PHP Version: 7.0.32

PHP Version:
file.vtt | text/plain
file.xml | application/xml

WordPress 5.0.1 MIME validation for uploaded files fix for wp_handle_sideload()

Sorry, this file type is not permitted for security reasons due to WordPress 5.0.1 MIME validation for uploaded files fix for wp_handle_sideload()

If you have used function wp_handle_sideload() in any of your plugin/theme then you need to pass the mimes types too.

Because WordPress 5.0.1 Security Released. In which the uploaded files are validated with the real MIME type.

E.g. If you have set the application/xml MIME type though filter upload_mimes to upload the XML file and if the real MIME type of uploaded file is text/xml then the file was not uploaded. And it shows the below message.

Sorry, this file type is not permitted for security reasons.

To fix this you need to set the mimes for function wp_handle_sideload().

Check below code for reference.

For more details visit: