#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 17 months ago.
19524.2.diff (418 bytes) - added by nacin 17 months ago.
hotfix-patch.diff (3.0 KB) - added by markjaquith 17 months ago.
hotfix-patch.2.diff (3.4 KB) - added by markjaquith 17 months ago.
Updated with proposed (untested) fix for #19510
19524.3.diff (1.3 KB) - added by nacin 17 months ago.

Download all attachments as: .zip

Change History (15)

  • 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

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. It would be worth doing a sweep.

Last edited 17 months ago by mitchoyoshitaka (previous) (diff)

comment:3 follow-up: ↓ 4   nacin17 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   mitchoyoshitaka17 months ago

Replying to nacin:

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

Tested. Works.

nacin17 months ago

comment:5 follow-up: ↓ 6   nacin17 months ago

Patch for 3.3.1.

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

Replying to nacin:

Patch for 3.3.1.

Tested. Works.

Updated with proposed (untested) fix for #19510

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

In [19597]:

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

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.

nacin17 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.