WP-Spamshield : La mise à jour qui a tué le site … ( Erreur 500 )

Je pense que l’équipe de WP-Spamshield manque vraiment de sérieux, leur dernière mise à jour a mis hors service un grand nombre de site sous WordPress. Il aurait pu faire des bêtas tests sur leur version.

Déroulement, à 18h37 la mise à jour ce fait.

[21/Jan/2017:18:37:56 +0100] "GET /wp-admin/update.php?action=update-selected&plugins=wp-spamshield%2Fwp-spamshield.php&_wpnonce=539f30c06d HTTP/1.1" 200 15142 "https://www.cyber-neurones.org/wp-admin/update-core.php?action=do-plugin-upgrade"

Et à 18h39 le site est H.S , a chaque test on a une erreur 500.

192.0.101.226 - - [21/Jan/2017:18:38:17 +0100] "HEAD / HTTP/1.1" 500 - "-" "jetmon/1.0 (Jetpack Site Uptime Monitor by WordPress.com)" "www.cyber-neurones.org" "mutu0174.phpnet.org »
192.0.101.226 - - [21/Jan/2017:18:39:20 +0100] "HEAD / HTTP/1.1" 500 - "-" "jetmon/1.0 (Jetpack Site Uptime Monitor by WordPress.com)" "www.cyber-neurones.org" "mutu0313.phpnet.org »
54.217.201.243 - - [21/Jan/2017:18:39:26 +0100] "HEAD / HTTP/1.1" 500 - "-" "jetmon/1.0 (Jetpack Site Uptime Monitor by WordPress.com)" "www.cyber-neurones.org" "mutu0174.phpnet.org »
122.248.245.244 - - [21/Jan/2017:18:39:27 +0100] "HEAD / HTTP/1.1" 500 - "-" "jetmon/1.0 (Jetpack Site Uptime Monitor by WordPress.com)" "www.cyber-neurones.org" "mutu0311.phpnet.org"

Au début j’ai cru à une panne de PHPNET.ORG, mais leur serveur fonctionnait correctement. En regardant les logs j’ai pu voir que c’était la mise à jours qui avait causé le problème. Mais pour avoir les logs chez PHPNET.ORG il faut attendre le jour suivant 🙁 .

Ensuite j’ai réussi a trouvé un forum de personnes qui avaient le même problème. Disons que j’aurai pu voir l’erreur si j’avais eu un fichier de logs avec toutes les erreurs PHP.

If you would like immediate relief, you can comment out the following line in the wp-spamshield.php file that have WPSS_Utils::append_log_data. Lines 2642, 7323, 7393 are the only ones you would need to edit. Just add “//” to the beginning of the line. This is a debugging function, so it’s safe to comment it out. (If anyone isn’t familiar with editing PHP files, just make sure you’re using a text editor like Notepad or Notepad++, and don’t use any Microsoft, Office, or word-processor-type apps. Also, always back up the original file first.)
Voici la traduction en Français :
Si vous souhaitez une correction immédiate, vous pouvez commenter les lignes suivantes dans le fichier wp-spamshield.php qui ont WPSS_Utils :: append_log_data. Les lignes 2642, 7323, 7393 sont les seules à éditer. Il suffit d’ajouter « // » au début de la ligne. Il s’agit d’une fonction de débogage, il est donc prudent de commenter. (Si quelqu’un n’est pas familier avec l’édition de fichiers PHP, assurez-vous simplement que vous utilisez un éditeur de texte comme le Bloc-notes ou le Bloc-notes ++ et n’utilisez pas d’applications Microsoft, Office ou de type processeur de texte. Le fichier d’origine d’abord.)
L’URL du support de WP-Spamshield est la suivante : https://www.redsandmarketing.com/plugins/wp-spamshield/support/ . Ils sont aussi présent sur Twitter ( @WPSpamShield ) , si vous avez envie de les féliciter 🙂 .
Voici donc les modifications que j’ai fait dans le fichier wp-content/plugins/wp-spamshield/wp-spamshield.php :
Ligne 2642 :
        if( !empty( $bclm_off ) ) { /* Turns Blocked Spam Logging Mode off and clears vaues */
WP_SpamShield::update_option( array( ‘comment_logging’ => 0, ‘comment_logging_all’ => 0, ‘comment_logging_start_date’ => 0, ‘comment_logging_end_date’ => 0, ) );
//if( !empty( $wpss_rsds ) ) { WPSS_Utils::append_log_data( NULL, NULL, ‘Blocked Spam Logging Mode has been disabled. ‘.'[‘.$bclm_oc.’]’ ); }
} else {
Ligne 7323: 

                if( FALSE === $valid ) {
//WPSS_Utils::append_log_data( NULL, NULL, ‘Error sanitizing IP address in method ‘.__CLASS__.’::’.__FUNCTION__.’ | Original IP: ‘.$str.’ | Sanitized IP: ‘.$tmp );
}

Ligne 7393 : 
                if( !is_string( $pattern ) || !is_string( $subject ) || FALSE === strpos( $pattern, ‘~’ ) || 0 !== strpos( $pattern, ‘~’ )  || 0 !== strpos( $pattern_rev, ‘~’ ) ) {
 //WPSS_Utils::append_log_data( NULL, NULL, ‘Error in regex pattern: ‘.$pattern );
return FALSE;
}

Ensuite il faut copier le fichier et écraser l’ancien.  Normalement cela permet de refaire fonctionner le fichier, ce qui a été le cas pour moi.

Et derrière il faut faire la mise à jour avec le correctif du correctif :

On nous avez promis le bordel avec Trump, cela n’a pas loupé 😉 .

Pour leur défense, ils ont étés très réactif sur la correction. Mais je pense qu’il ne faut pas faire de mise à jours le Samedi. Il devrait faire les mises à jours du lundi au jeudi, sauf s’il y a une faille critique.

Version 1.9.9.8.7, released 01/22/17

Fixed a bug affecting certain server configurations.
Made various code enhancements and improvements.
Version 1.9.9.8.6, released 01/21/17

Made various code enhancements and improvements.
Added an option to disable automatic plugin updates.
Maintenance: Updated the spam filters.

Version 1.9.9.8.5, released 01/19/17

Fixed a bug causing PHP Notices/Warnings.
Made various code enhancements and improvements.
Maintenance: Updated the spam filters.

Pour finir une petite commande curl pour voir le nombre d’erreur 500 par jour à partir des logs d’Apache :

cat access.log.201701* | awk '{print $4 " " $9}' | sed 's/:/ /g' | awk '{print $1 " " $5}' | sort -n | uniq -c | grep "2017 500"
  32 [01/Jan/2017 500
  28 [02/Jan/2017 500
 436 [03/Jan/2017 500
  45 [04/Jan/2017 500
  42 [05/Jan/2017 500
  48 [06/Jan/2017 500
  39 [07/Jan/2017 500
  33 [08/Jan/2017 500
  49 [09/Jan/2017 500
  71 [10/Jan/2017 500
  43 [11/Jan/2017 500
  52 [12/Jan/2017 500
 107 [13/Jan/2017 500
  62 [14/Jan/2017 500
  53 [15/Jan/2017 500
  64 [16/Jan/2017 500
  53 [17/Jan/2017 500
 102 [18/Jan/2017 500
  64 [19/Jan/2017 500
  56 [20/Jan/2017 500
1284 [21/Jan/2017 500
6365 [22/Jan/2017 500

Misère.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.