Installer WordPress 4.1 « Dinah » sur les pages perso de FREE
<IfDefine Free> php56 1 </IfDefine>
Bien sûr, cette directive remplace la directive actuelle qui est
<IfDefine Free> php 1 </IfDefine>
La version originale de WordPress fonctionne parfaitement avec cette directive, il n’est donc plus besoin d’installer une version adaptée à PHP 5.1.3.
Ainsi prend fin la longue série d’adaptation de WordPress aux pages perso de FREE !
.htaccess sécurisé pour PHP 5.6.8
Voir le code du fichier .htaccess sécurisé et optimisé pour PHP 5.6.8
# spécification des jeux de caractères des documents (à compléter si besoin) AddCharset utf-8 .css .xml .po .php .js # activation php5 (free.fr) <ifDefine Free> PHP56 1 </ifDefine> # Protection du fichier .htaccess <Files .htaccess> Order Allow,Deny Deny from all </Files> # Protection du fichier wp-config.php <files wp-config.php> order allow,deny deny from all </files> # Desactivation de l'affichage des répertoires Options All -Indexes
Depuis WordPress 3.2, il est nécessaire que le serveur dispose d’au minimum PHP 5.2.4, or les pages perso de FREE disposent au mieux de PHP 5.1.3.
Ainsi, les dernières versions officielles de WordPress ne peuvent pas fonctionner chez FREE telles quelles et nécessitent d’être adaptées à PHP 5.1.3.
Lorsque cela est possible, les fonctions de PHP 5.2.4 nécessaires à WordPress 4.1 sont émulées sous PHP 5.1.3. Lorsque l’émulation n’est pas réalisable, le bug est signalé s’il est connu.
En cas d’évolution de la version de PHP des pages perso de FREE vers PHP 5.6 (comme serait en train de la préparer Lionel Bernardi, l’administrateur des pages perso de FREE.), cette version restera fonctionnelle. En effet, elle est prévue pour fonctionner sous toutes les versions de PHP supérieures à 5.1.2.
« Bonjour,
j’aimerai juste savoir si Free pense un jour, à migrer sa version PHP vers PHP 5.2 ou PHP 5.4 ? »
Lionel Bernardi répondait à 17:08 :
« Non…
Par contre php 5.6 il y a de fortes chances oui… Il faudra être encore
un peu patient, mais c’est en cours…Lionel. »
Cette version est mise en ligne sans aucun support ni aucune garantie. Elle est fonctionnelle sur mon propre site, mais peut avoir des bugs ou des incompatibilités avec vos extensions ou votre thème.
Cette version s’inscrit dans la continuité du travail effectué sur les versions 4.0.x précédentes disponibles sur cette page : Installer WordPress 4.0 « Benny » sur les pages perso de FREE
Avant de se lancer dans une mise à jour il est très important de faire auparavant une sauvegarde complète de la base de données (BDD) et du FTP comme indiqué dans le CODEX WordPress : Détails de mise à jour.
Voir la procédure rapide de mise à jour
Or, depuis la version WP 3.7 toutes les mises à jour sont effectuées chaque nuit automatiquement, ce que FREE interdit.
Vous devez donc désactiver ces mises à jours ainsi que l’installation d’extensions et de thèmes depuis le tableau de bord WordPress en ajoutant au fichier « wp-config.php » les lignes ci-dessous :
/** Désactive les mises à jour automatiques de WordPress */ define( 'AUTOMATIC_UPDATER_DISABLED', true ); /** Désactive l’Installation d'Extensions et de Thèmes depuis le tableau de bord */ define('DISALLOW_FILE_MODS',true);
Les deux effets de la constante DISALLOW_FILE_MODS
define('DISALLOW_FILE_MODS',true);
permet de bloquer la capacité des utilisateurs à utiliser les fonctionnalité d’installation / mise à jour des extensions et thèmes du tableau de bord WordPress
Il n’est pas besoin d’ajouter ces lignes lors d’une première installation, elle sont déjà présentes dans le fichier « wp-config-sample.php » qui est utilisé comme modèle lors de la création du fichier « wp-config.php » .
En revanche, pour une mise à jour de WordPress, vérifiez si ces lignes sont vraiment présentes dans le fichier « wp-config.php »
Le choix du « fuseau horaire » accessible depuis le tableau de bord Réglages -> Général doit obligatoirement être effectué via le choix UTC-1, UTC, UTC+1, UTC+2, etc. Le fuseau horaire ne doit pas être choisi via le nom des villes comme « Paris » « Berlin » sous peine d’avoir l’erreur « Fatal error: Call to undefined function timezone_open() in »…/wp-includes/functions.php on line 3611 » qui bloque le site.
Lire une méthode de résolution de ce problème dans la conversation avec arno dans laquelle il a été signalé.
La fonction timezone_open() n’est en effet disponible que sous PHP 5.2 et n’est pas émulée dans ce présent pack.
Le réglage des permaliens depuis le tableau de bord de WordPress crée une erreur 500 sur les pages perso de FREE. Cette erreur 500 est causée par les REWRITE RULES qu’écrit WordPress dans le fichier « .htaccess » et qui sont interdites sur les pages perso de FREE.
Cette version intègre la correction de cette erreur 500 (correction n°XIV) proposée par eric dans son commentaire du 1er novembre 2014.
Désormais, les permaliens peuvent être modifiés depuis le tableau de bord sans créer d’erreur 500.
Attention, les permaliens chez FREE doivent toujours être modifié avec le réglage Structure personnalisée et précédé de /index.php/ comme par exemple /index.php/%postname%/ pour afficher le nom de l’article.
De plus amples renseignements sont donnés dans le CODEX ici : Les marqueurs de structure
D’après mes mesures, cette version consomme environ 1,8 Mo de plus que la version 3.7.1 spéciale FREE selon le thème par défaut utilisé.
Ainsi, cette version WP 4.1 consomme nue (une seule extension activée : WP-Memory-Usage) lors d’une première installation avec le thème :
Ce qui représente un peu plus de 83 % de la mémoire PHP disponible sur les pages perso de FREE (32 Mo non négociable). Ainsi, il ne vous sera pas possible d’activer un thème complexe ou de multiples extensions sur les pages perso de FREE.
L’erreur « Fatal error: Allowed memory size of 33554432 bytes exhausted… » se produit lorsque des plugins et/ou un thème WordPress qui consomment trop de mémoire PHP sont activés simultanément. Un consommation excessive de mémoire PHP peut aussi se traduire par une erreur 500.
Cette version intègre un plugin automatique que j’ai écrit permettant de désactiver les widgets WordPress non utilisés et donc permettant d’économiser de la mémoire PHP. Son usage est décrit dans la section n°7 qui suit.
Si jamais ce plugin laisse passer des pings ou des rétroliens que certains robots utilisent pour spammer, il suffit de clôturer les PINGS et RÉTROLIENS depuis le tableau de bord : tableau de bord->Réglages->Discussion, décocher la case « Autoriser les liens de notifications depuis les autres sites (notifications par pings et rétroliens) » et ENREGISTRER tout en bas de page.
Cela les fermera pour les nouveaux articles.
Pour les anciens articles, il suffit de les clôturer avec phpMyAdmin en effectuant cette requête depuis l’onglet SQL :
UPDATE `wp_posts` SET ping_status='closed';
<?php /* No WP widgets Description: Désactiver tous les widgets par défaut de WordPress */ if ( is_admin() ) { add_action('wp_dashboard_setup', 'gkp_remove_dashboard_widgets' ); add_action('widgets_init', 'supprimer_widgets', 1); remove_action('welcome_panel', 'wp_welcome_panel'); // widget du tableau de bord général function gkp_remove_dashboard_widgets() { global $wp_meta_boxes; //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);// liens entrants //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); // Extensions //unset($wp_meta_boxes['dashboard']['normal']['high']['dashboard_browser_nag']); //Votre navigateur est obsolète ! //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);// Presse-Minute "d'un coup d'oeil" //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']); // activité récente //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);// Commentaires récents // Side Column: //unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); // Brouillon rapide //unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); // Billets en brouillon unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); // Nouvelles de WordPress //unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); // Autres actualités WordPress } // widgets du menu widget function supprimer_widgets() { //unregister_widget('WP_Widget_Tag_Cloud'); //widget nuage de tags //unregister_widget('WP_Widget_Search'); //widget recherche //unregister_widget('WP_Widget_Pages'); //widget pages //unregister_widget('WP_Widget_Calendar'); //widget calendrier //unregister_widget('WP_Widget_RSS'); //widget flux RSS //unregister_widget('WP_Nav_Menu_Widget'); //widget menu personnalisé //unregister_widget('WP_Widget_Archives'); //widget archives //unregister_widget('WP_Widget_Text');//widget texte //unregister_widget('WP_Widget_Recent_Posts');//widget derniers articles //unregister_widget('Twenty_Eleven_Ephemera_Widget');//widget ephemère de twenty eleven //unregister_widget('WP_Widget_Links'); //widget liens/ blogroll //unregister_widget('WP_Widget_Meta'); //widget liens d’administration //unregister_widget('WP_Widget_Categories'); //widget catégories //unregister_widget('WP_Widget_Recent_Comments'); //widget commentaires récents } }
Pour désactiver un widget, il suffit de supprimer le double slash // en début de ligne.
Par exemple, dans la ligne 27 le widget « Nouvelles de WordPress » est désactivé.
27
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); // Nouvelles de WordPress
Alors que la ligne 28 laisse le widget « Autres actualités WordPress » actif.
28
//unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); // Autres actualités WordPress
Vous pouvez activer ces plugins à votre gré. Ils consomment très peu de mémoire PHP et sont très utiles, voire indispensables.
Lire le paragraphe
En attendant de trouver la ou les failles, il convient d’interdire l’exécution de fichiers PHP dans le dossier « /uploads ». À cette fin Julio Potier (de BLOG.SECUPRESS.FR et de BoiteAWeb.fr) recommande de placer dans « /uploads » un fichier « .htaccess » contenant :
<Files *.php> Deny from all </Files>
Il s’est avéré par la suite qu’il y a eu 1000 thèmes touchés par la faille Revolution Slider
Description de la Vulnérabilité : Un attaquant peut appeler la page /inc/admin/phpinfo.php, qui appelle la fonction PHP phpinfo() et ainsi obtenir des informations sensibles.
Description de la Vulnérabilité : Un attaquant peut traverser les répertoires de WordPress, afin de lire un fichier situé hors de la racine du service.
WordPress Tera-chart : traversée de répertoire – 30 juillet 2014
WordPress enl-newsletter : injection SQL – 30 juillet 2014
Description de la Vulnérabilité : Une injection SQL est un type d’exploitation d’une faille de sécurité d’une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité.
WordPress BookX : traversée de répertoire – 30 juillet 2014
Cliquer sur le bouton ci-dessous pour télécharger l’archive compatible FREE :
wp-content/themes/twentyfifteen/genericons/example.html (deleted) wp-content/themes/twentythirteen/genericons/example.html (deleted) wp-content/themes/twentyfourteen/genericons/example.html (deleted)
Mais comme seule la mise à jour via FTP est possible sur les pages perso de FREE, vous devez supprimer vous-même ces fichiers via FTP.
wordpress-4.1.1-fr_FREE.zip <---------- WordPress 4.1.1
wordpress-4.1-fr_FREE.zip <---------- WordPress 4.1
Afin d’activer PHP 5.1.3 sur les pages perso au lieu de PHP 4.4.3, vous devez installer à la racine du site un fichier « .htaccess » contenant une seule ligne
php 1
Ou mieux, téléchargez le fichier « .htaccess » sécurisé et optimisé selon les conseils de Al du site les.pages.perso.chez.free en cliquant sur le bouton ci-dessous :
.htaccess sécurisé pour FREE.FR <---------- fichier « .htaccess »
Voir le code du fichier .htaccess sécurisé et optimisé pour les pages perso de FREE
# spécification des jeux de caractères des documents (à compléter si besoin) AddCharset utf-8 .css .xml .po .php .js # activation php5 (free.fr) <ifDefine Free> PHP 1 </ifDefine> # Protection du fichier .htaccess <Files .htaccess> Order Allow,Deny Deny from all </Files> # Protection du fichier wp-config.php <files wp-config.php> order allow,deny deny from all </files> # Desactivation de l'affichage des répertoires Options All -Indexes
A la suite de nombreuses attaques vers les pages d’administration des sites WordPress et Joomlaa, Lionel Bernardi (administrateur des pages perso de FREE) a installé un script qui fixe des règles pour limiter ces requêtes et interdire l’accès aux adresses IP qui tentent de se connecter trop souvent à ces pages d’administration. Toutefois, ce script, parfois trop sensible, a interdit à certains blogueurs l’accès à leur propre site depuis leur box internet. Si tel est votre cas, vous devez contacter le forum USENET des pages perso pour que Lionel Bernardi, l’admin des pages perso, déblackliste votre adresse IP. Pour éviter ce problème, il est très fortement conseillé de bunkériser l’accès à l’administration de WordPress. Comment bunkériser l’admin de WordPresss ?
<Files wp-login.php> order deny,allow Deny from all allow from xx.xxx.xxx.xx allow from yy.yyy.yyy.yy </Files>
Dans cet exemple, seules les IP « xx.xxx.xxx.xx » et « yy.yyy.yyy.yy » auront accès à la page de login, toutes les autres aboutiront sur une page d’erreur.
Ce forum n’est pas accessible depuis un navigateur internet. C’est en réalité un « groupe de discussion » (comme ceux usités par les universitaires). Pour y accéder, vous devez installer un logiciel de News comme par exemple :
Pour un problème lié à WordPress lui-même, vous pouvez vous adresser aux forums supports de WordPress :
Les six premières modifications sont identiques à celles apportées par Gaëtan Janssens pour installer la version 3.2.1 et affinées conjointement avec Rodolphe Marsolier pour la version 3.5.2, auxquelles s’ajoutent les neuf modifications numérotées VII à XV. Voir les modifications du noyau de WordPress
require( ABSPATH . WPINC . '/pomo/native.php');
pour obtenir ce qui suit :
70
71
72
73
74
75
76
77
// Load early WordPress files. require( ABSPATH . WPINC . '/compat.php' ); require( ABSPATH . WPINC . '/functions.php' ); require( ABSPATH . WPINC . '/class-wp.php' ); require( ABSPATH . WPINC . '/class-wp-error.php' ); require( ABSPATH . WPINC . '/plugin.php' ); require( ABSPATH . WPINC . '/pomo/native.php'); require( ABSPATH . WPINC . '/pomo/mo.php' );
Ce fichier « native.php » est un hack wordpress créé par linushoppe qui permet d’utiliser la bibliothèque du projet GNU d’internationalisation (traduction) « gettext » lorsque celle-ci est déjà implantée au niveau du serveur (elle l’est sur les pages perso de FREE), ce qui permet d’économiser 5 Mo de mémoire PHP.
Modification du fichier /wp-includes/version.php par le remplacement de '5.2.4' par '5.1.2' afin de permettre à WordPress de ne pas tenir compte du prérequis « PHP 5.2.4 » :
28
$required_php_version = '5.1.2';
Modification du fichier /wp-includes/functions.php par l’ajout du test de la version de PHP active sur le serveur au début du fichier /wp-includes/functions.php qui devient ainsi :
2
3
4
5
6
7
8
9
/** * Main WordPress API * * @package WordPress */ if ( version_compare( phpversion(), '5.2.4', '<' ) ) require_once( ABSPATH . '/wp-includes/upgrade.php' );
Cette condition permet d'inclure un fichier « upgrade.php » qui émule un ensemble de fonctions disponibles sous php 5.2 à 5.5 sur un serveur disposant au minimum de php 4.1 (FREE dispose de php 5.1.3) lorsque le serveur ne dispose pas de php 5.2.4.
Modification du fichier /wp-includes/pluggable.php par remplacement des lignes 918 et suivantes ci-dessous :
918
919
920
921
922
setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); if ( COOKIEPATH != SITECOOKIEPATH ) setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true);
par celles-ci :
918
919
920
921
922
923
924
925
926
927
928
929
930
931
if ( version_compare( phpversion(), '5.2.0', '>=' ) ) { setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); if ( COOKIEPATH != SITECOOKIEPATH ) setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN,$secure_logged_in_cookie, true); } else { setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure); setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure); setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie); if ( COOKIEPATH != SITECOOKIEPATH ) setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie); }
Cela permet d'utiliser la fonction PHP setcookie() qui passe de 6 paramètres avec PHP 5.1 à 7 paramètres avec PHP 5.2.
La condition sur la version de PHP permet à cette version de WordPress de continuer de fonctionner normalement si les serveurs de FREE passent à une nouvelle mouture de PHP plus récente comme la version 5.6 qui serait en cours de mise au point par Lionel Bernardi, le nouvel admin des pages perso.
Modification du fichier /wp-config-sample.php qui désactive les mises à jour automatiques et qui désactive l’installation d'extensions et de thèmes depuis le tableau de bord de WordPress (valable uniquement pour une première installation de WordPress, pas pour une mise à jour de WordPress).
85
86
87
88
89
/** Désactive les mises à jour automatiques de WordPress */ define( 'AUTOMATIC_UPDATER_DISABLED', true ); /** Désactive l’Installation d'Extensions et de Thèmes */ define('DISALLOW_FILE_MODS',true);
Remplacement des lignes 1510 à 1523 de la fonction wp_mkdir_p() du fichier /wp-includes/functions.php suivantes :
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
if ( @mkdir( $target, $dir_perms, true ) ) { /* * If a umask is set that modifies $dir_perms, we'll have to re-set * the $dir_perms correctly with chmod() */ if ( $dir_perms != ( $dir_perms & ~umask() ) ) { $folder_parts = explode( '/', substr( $target, strlen( $target_parent ) + 1 ) ); for ( $i = 1; $i <= count( $folder_parts ); $i++ ) { @chmod( $target_parent . '/' . implode( '/', array_slice( $folder_parts, 0, $i ) ), $dir_perms ); } } return true; }
par les lignes correspondantes sous WordPress 3.7.1 suivantes :
1510
1511
1512
if ( @mkdir( $target, $dir_perms, true ) ) { return true; }
En effet, cette fonction a été modifiée à partir de WordPress 3.7.2 ce qui crée sur les pages perso de FREE l'erreur « Unsupported operand types in /wp-includes/functions.php on line 1515 » lors d'une première installation chez FREE.
L'appel de la fonction umask() (ligne 1515) qui est une des fonctions PHP interdite sur les pages perso de FREE, crée ce bug.
Merci à Cley Faye et à mithril94 d'avoir éclairci ce point sur le forum usenet d'assistance des pages perso de FREE.
Remplacement de la ligne 1197 de la fonction sanitize_widget_instance() du fichier /wp-includes/class-wp-customize-widgets.php suivante :
1197
$decoded = base64_decode( $value['encoded_serialized_instance'], true );
par les lignes suivantes
1197
1198
1199
if ( version_compare( phpversion(), '5.2.0', '<' ) ) $decoded = base64_decode( $value['encoded_serialized_instance']); else $decoded = base64_decode( $value['encoded_serialized_instance'], true );
Cela permet d'utiliser la fonction PHP base64_decode() qui passe de 1 paramètre avec PHP 5.1 à 2 paramètres avec PHP 5.2.
En effet, sur les nouvelles installations de WordPress et non pas sur les anciennes, cette fonction crée l'erreur « Warning: base64_decode() expects exactly 1 parameter, 2 given in /wp-includes/class-wp-customize-widgets.php on line 1164 » sur la page Apparence ->Personnaliser qui est accessible depuis le tableau de bord comme signalé par stephane
La condition sur la version de PHP permet à cette version de WordPress de continuer de fonctionner normalement si les serveurs de FREE passent à une nouvelle mouture de PHP plus récente comme la version 5.6 qui serait en cours de mise au point par Lionel Bernardi, le nouvel admin des pages perso.
Modification de la ligne 221 du fichier /wp-admin/includes/update.php
221
$theme_name = sprintf( '<a href="themes.php">%1$s</a>', $theme_name );
par :
221
$theme_name = sprintf( '<a href="themes.php">%1$s</a>', $theme_name->name );
afin de permettre l'affichage de la version du thème actif dans le widget « D'un coup d'oeil » sous PHP 5.1.3. Cette modification fonctionne aussi avec les versions supérieures de PHP.
Remplacement de la fonction get_available_languages() du fichier /wp-includes/l10n.php :
763
764
765
766
767
768
769
770
771
772
773
774
function get_available_languages( $dir = null ) { $languages = array(); foreach( (array)glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ) as $lang_file ) { $lang_file = basename($lang_file, '.mo'); if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) && 0 !== strpos( $lang_file, 'admin-' )) $languages[] = $lang_file; } return $languages; }
par
763
764
765
766
767
768
769
770
771
772
773
774
775
function get_available_languages( $dir = null ) { $languages = array(); foreach (new DirectoryIterator( is_null( $dir) ? WP_LANG_DIR : $dir ) as $fileInfo) { if (substr($fileInfo,-3)=='.mo') {$lang_file = basename($fileInfo->getFilename(), '.mo'); if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) && 0 !== strpos( $lang_file, 'admin-' )) $languages[] = $lang_file; } } return $languages; }
En effet, lorsque WordPress est mis à jour vers 4.1, cette fonction get_available_languages() est appelée par la fonction upgrade_400() de mise à jour vers 4.1 située dans le fichier /wp-admin/includes/upgrade.php (lignes 1318 à 1329) :
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
function upgrade_400() { global $wp_current_db_version; if ( $wp_current_db_version < 29630 ) { if ( ! is_multisite() && false === get_option( 'WPLANG' ) ) { if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && in_array( WPLANG, get_available_languages() ) ) { update_option( 'WPLANG', WPLANG ); } else { update_option( 'WPLANG', '' ); } } } }
La condition de la ligne 1322 retourne FALSE et la fonction upgrade_400() affecte donc une valeur vide (ligne 1325) à l'option WPLANG de la table wp_options. Or, par défaut WordPress considère que la valeur vide de WPLANG est la langue anglaise.
Ce problème vient de l'appel de la fonction PHP glob() dans la boucle foreach (à la ligne 760) qui retourne un objet vide sur les page perso de FREE.
En effet, cette fonction glob() est interdite chez FREE car elle consommerait trop de ressources d'après cette discussion : Discussion: Remplacer la fonction Glob chez Free ? [Résolu].
Merci à mithril94 du forum USENET de support des pages perso de FREE pour sa contribution à cette solution.
Modification de la ligne 31 du fichier /wp-load.php situé à la racine du site en ajoutant un @ avant les appels de la fonction file_exists() qui devient ainsi :
31
} elseif ( @file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! @file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
En effet, une modification de la configuration de PHP des pages perso de FREE fait afficher l'erreur « Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File (/wp-config.php) is not within the allowed path(s): /wp-load.php on line 31 » lors d'une première installation de WordPress 4.1 .
L'ajout du @ désactive l'affichage de l'erreur renvoyé par la fonction file_exists(). Cette erreur s'affiche désormais avec toutes les versions de WordPress sans être fatale (l'installation fonctionne quand même).
Merci à a@a.a du forum USENET de support des pages perso pour cette solution.
Modification de la ligne 56 du fichier /wp-admin/setup-config.php en ajoutant un @ avant les appels de la fonction file_exists() qui devient ainsi :
56
if ( @file_exists(ABSPATH . '../wp-config.php' ) && ! @file_exists( ABSPATH . '../wp-settings.php' ) )
En effet, une modification de la configuration de PHP des pages perso de FREE fait afficher l'erreur fatale « Warning: Cannot modify header information - headers already sent by (output started at /wp-load.php:31) in /wp-load.php on line 56 » lors d'une première installation de WordPress 4.1.
L'ajout du @ désactive l'affichage de l'erreur renvoyé par la fonction file_exists() qui ainsi ne crée pas l'erreur fatale de la modification du header de la page.
Merci à a@a.a du forum USENET de support des pages perso pour cette solution.
Remplacement de la fonction insert_with_markers() située dans le fichier /wp-admin/includes/misc.php par
102
103
function insert_with_markers( $filename, $marker, $insertion ) { return true;}
Ce qui empêche WordPress d'écrire des REWRITE RULE dans le fichier « .htaccess ». En effet, le réglage des permaliens depuis le tableau de bord de WordPress crée une erreur 500 sur les pages perso de FREE. Cette erreur 500 est causée par les REWRITE RULES qu'écrit WordPress dans le fichier « .htaccess » et qui sont interdites sur les pages perso de FREE.
Merci à eric pour avoir partagé cette solution dans son commentaire du 1er novembre 2014
Remplacement des lignes 341 à 343 suivantes de la fonction validate_date_values() du fichier /wp-includes/date.php
341
342
343
$date = new DateTime(); $date->setISODate( $date_query['year'], 53 ); $week_count = $date->format( "W" ) === "53" ? 53 : 52;
par
341
$week_count = date('W',mktime(0,0,0,12,28,$date_query['year']));
En effet, la classe DateTime a été introduite avec PHP 5.2 et n'est pas émulée dans ce pack. Cette class induit l'erreur « Fatal error: Class 'DateTime' not found in /wp-includes/date.php on line 341 » lors de l'usage du widget « Archives ».
Cette ligne de code calcule le nombre de semaines de l'année tout comme les trois lignes du code original. Ce calcul fonctionne sous toutes les versions de php sans avoir besoin d'utiliser la class DateTime. Il est basé sur le principe suivant « The number of weeks in a given year is equal to the corresponding week number of 28 December (le nombre de semaines d'une année donnée est égal au numéro de la semaine du 28 décembre) ».
J'ai ouvert un ticket intitulé « the number of weeks in a given year » sur wordpress.org pour que cette modification soit intégrée à la prochaine mise à jour de WordPress puisqu'elle est plus simple et plus performante (1/100 s plus rapide) que le code original.
Sur mon site avec Twenty thirteen la plus grosse image téléchargée est celle-ci :
[caption id="attachment_12215" align="alignleft" width="970"] Kyotogarden-970x728 508 Ko[/caption]Conclusion : Il semble que sur un site WordPress 4.1 nu (aucun plugin activé) pesant 27,49 Mo chez FREE, la limite maximum du poids des images varie selon la lourdeur du thème installé et peut aller jusqu'à un maximum de 550 Ko.
Copiez-collez cette URL dans votre site WordPress pour l’inclure
Copiez-collez ce code sur votre site pour l’y intégrer