WordPress.org

Make WordPress Core

#19524 closed defect (bug) (fixed)

Script Loader dies in 3.3 on no-JSON PHP

Reported by: mitchoyoshitaka Owned by: nacin
Priority: highest omg bbq Milestone: 3.3.1
Component: General Version: 3.3
Severity: blocker Keywords: has-patch
Cc:

Description

As of r18464, the script loader uses json_encode, but for those machines which for some bizarre reason don't build JSON support into PHP (cf #18015), a load-scripts.php request will die.

This happened to me on the released 3.3.

Attachments (5)

19524.diff (383 bytes) - added by mitchoyoshitaka 18 months ago.
19524.2.diff (418 bytes) - added by nacin 18 months ago.
hotfix-patch.diff (3.0 KB) - added by markjaquith 18 months ago.
hotfix-patch.2.diff (3.4 KB) - added by markjaquith 18 months ago.
Updated with proposed (untested) fix for #19510
19524.3.diff (1.3 KB) - added by nacin 18 months ago.

Download all attachments as: .zip

Change History (15)

mitchoyoshitaka18 months ago

comment:1 nacin18 months ago

  • Component changed from Gallery to General
  • Milestone changed from Awaiting Review to 3.3.1
  • Priority changed from normal to highest omg bbq
  • Severity changed from normal to blocker

comment:2 mitchoyoshitaka18 months ago

Note: it's possible that there are other corners of the code where JSON has been added since 3.3 and compat.php isn't included, but I just haven't stumbled into them yet.

Version 0, edited 18 months ago by mitchoyoshitaka (next)

comment:3 follow-up: nacin18 months ago

Patch for hotfix. By defining SCRIPT_DEBUG, load-scripts.php is bypassed. Untested.

Index: hotfix.php
===================================================================
--- hotfix.php	(revision 474276)
+++ hotfix.php	(working copy)
@@ -34,6 +34,9 @@
 	$hotfixes = array();
 
 	switch ( $wp_version ) {
+		case '3.3' :
+			define( 'SCRIPT_DEBUG', true );
+			break;
 		case '3.1.3' :
 			$hotfixes = array( '313_post_status_query_string' );
 			break;

comment:4 in reply to: ↑ 3 mitchoyoshitaka18 months ago

Replying to nacin:

Patch for hotfix. By defining SCRIPT_DEBUG, load-scripts.php is bypassed. Untested.

Tested. Works.

nacin18 months ago

comment:5 follow-up: nacin18 months ago

Patch for 3.3.1.

comment:6 in reply to: ↑ 5 mitchoyoshitaka18 months ago

Replying to nacin:

Patch for 3.3.1.

Tested. Works.

markjaquith18 months ago

markjaquith18 months ago

Updated with proposed (untested) fix for #19510

comment:7 Ipstenu18 months ago

FYI, that means "Please install http://wordpress.org/extend/plugins/hotfix/ if you have this problem, until 3.3.1 comes out." ;)

comment:8 nacin18 months ago

In [19597]:

Define json_encode() in load-scripts.php. see #19524 for trunk.

comment:9 nacin18 months ago

After 3.2's JSON snafu, we asked the kind folks at VaultPress to provide some stats on how many installs really don't have JSON compiled. It ended up being a staggering 3.64%, and forced our hand on 3.2.1.

As of yesterday, the number now is 1.25%.

However, we realized today that the number includes PHP4 installs. So the vast majority of these percentages actually include PHP4 on WP 3.1.x. Just two VaultPress sites are PHP 5.2 but missing json. Both appear custom-compiled, so there's no host for us to contact.

That doesn't make this fix any less invalid, but given Hotfix, it should make us feel better about waiting for a 3.3.1.

nacin18 months ago

comment:10 nacin18 months ago

  • Owner set to nacin
  • Resolution set to fixed
  • Status changed from new to closed

In [19637]:

Define json_encode() in load-scripts.php. fixes #19524 for 3.3.

Note: See TracTickets for help on using tickets.