PHP : résoudre l'erreur "Redefining already defined constructor for class ..." photo

PHP : résoudre l’erreur Apache “child pid xxxx exit signal Segmentation fault (11)”

php-logo

J’ai découvert dernièrement qu’après une mise à jour du module php-apc, mes logs Apache étaient emplis de message d’erreur comme ceux-ci :

[Sun Nov 02 09:15:11 2014] [notice] child pid 5937 exit signal Segmentation fault (11)
[Sun Nov 02 09:17:36 2014] [notice] child pid 5586 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:50 2014] [notice] child pid 6230 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:51 2014] [notice] child pid 6388 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:52 2014] [notice] child pid 6228 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:53 2014] [notice] child pid 6235 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:54 2014] [notice] child pid 6392 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:55 2014] [notice] child pid 6385 exit signal Segmentation fault (11)Code language: CSS (css)

Cela en fait des erreurs !

Augmenter la taille de la limite de mémoire PHP

Sur le serveur, APC est configuré pour utiliser un unique segment de 128 Mo. Le problème, c’est que la directive memory_limit de PHP est elle aussi à 128 Mo. Par conséquent, il convient d’augmenter cette dernière :

1. On édite notre fichier de configuration PHP :

nano /etc/php5/apache2/php.ini

2. On recherche (Ctrl + w) le mot clé memory_limit et on remplace:

; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = -1Code language: JavaScript (javascript)

par

; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
; memory_limit = -1
memory_limit = 256MCode language: JavaScript (javascript)

3. On enregistre la nouvelle configuration et on relance Apache :

service apache2 restart

Vérifiez maintenant les logs Apache. Cela peut ne pas être suffisant.

Désinstaller APC

Dans mon cas, avec PHP 5.4.x, APC semble générer ces erreurs de manière aléatoire. J’ai donc désactivé APC avec :

apt-get remove php5-apcCode language: JavaScript (javascript)

Après relance du serveur Apache et analyse des logs, la situation est revenue à la normale :

Apache PHP/5.4.34 configured -- resuming normal operations

Le problème viendrait donc d’APC et de PHP 5.4 – il est important de noter que PHP 5.5 contient déjà un optimiseur de code intégré (Zend) donc à la prochaine mise à jour majeure de PHP, il sera inutile d’installer APC.

the-walking-dead-s5

The Walking Dead saison 5

The Walking Dead revient pour une cinquième saison sur AMC et à d’ores et déjà été renouvelée pour une sixième saison.

La saison reprend là où s’était terminée la saison précédente : le shérif Rick Grimes et son groupe ont finalement réussi à se rejoindre et à échapper au groupe de cannibales du Terminus.

Alors qu’ils sont libres et sans menace directe, ils trouvent refuge dans l’église du père Gabriel Stokes.

Alors que la moitié du groupe part pour Washington D.C., pour qu’Eugene Porter puisse trouver un antidote pour le virus, l’autre moitié du groupe reste à l’église et essaie de retrouver et sauver Beth Greene, qui a été kidnappée dans la saison précédente.

Cette saison sera composée de 16 épisodes, comme les précédentes.

Lire la suite

Serveur dédié : installer et configurer Varnish 4 photo

Serveur dédié : installer et configurer Varnish 4

Cette semaine, j’ai décidé de mettre mon installation de Varnish à jour.

La version 3.0.5 date de décembre 2013 et il est temps de mettre le serveur à jour pour bénéficier des dernières nouveautés et corrections de bugs. Nous passons donc de Varnish 3 à Varnish 4.

Cela ne se fait pas sans peine car chez Varnish, ils renomment certaines directives d’une version à l’autre… ce qui fait planter le serveur Varnish puisqu’il ne reconnait plus les directives.

Résultat : le fichier de configuration de la version précédente plantera obligatoirement sous la dernière version !

Ce tutoriel en 3 étapes nous donnera l’occasion de mettre à jour Varnish et de scinder notre fichier de configuration en plusieurs modules de manière à en simplifier l’édition et la maintenance futures.

Etape 1 : mise à jour des dépôts Varnish

Pour mettre à jour Varnish, il suffit de pointer apt vers les derniers dépôts à jour. On édite donc /etc/apt/sources.list :

nano /etc/apt/sources.listCode language: PHP (php)

et on y met à jour nos dépôts:

# varnish
deb http://repo.varnish-cache.org/debian/ wheezy varnish-4.0Code language: PHP (php)

On rafraîchit la liste des paquets et on lance la mise à jour :

apt-get update && apt-get upgradeCode language: JavaScript (javascript)

Varnish est maintenant mis à jour mais loin d’être fonctionnel étant donné que le format du fichier de configuration a changé.

Etape 2 : le nouveau fichier de configuration de Varnish 4 pour WordPress

Certaines directives ont changé de nom et, malgré avoir lu le guide de migration officiel, j’ai modifié mon fichier de configuration en corrigeant les erreurs une à une. Cela prend du temps mais au final, le fichier est plus clair qu’avant.

Lire la suite

Black Sabbath - It's Alright photo

Black Sabbath – It’s Alright

Black Sabbath a sorti, avec pas mal de difficultés, l’album Technical Ecstasy en 1976, sur lequel on peut entendre la chanson “It’s Alright”.

Je vous conseille la lecture de la page Wikipedia dédié à l’enregistrement de l’album, c’est très intéressant. On y apprend notamment que The Eagles ont dû, à plusieurs reprises, arrêter leurs enregistrement de l’album Hotel California parce que le son de Sabbath était trop fort et passait à travers les murs du studio.

La chanson “It’s Alright” a ceci de particulier qu’elle a été écrite et chantée par le batteur Bill Ward. Plutôt réticent à la chanter par peur d’offenser Ozzy Osbourne, Bill a été encouragé par tout le reste du groupe à le faire.

Dans son autobiographie, Ozzy Osbourne salue sa performance : “He’s got a great voice, Bill, and I was more than happy for him to do the honours.”

Lire la suite

PHP: résoudre l'erreur "file_get_contents(): SSL operation failed with code 1" photo

PHP : résoudre l’erreur “it is not safe to rely on the system’s timezone settings”

php-logo

Voici le message d’erreur PHP qui est apparu récemment dans mes logs Apache :

PHP Warning: strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone.

Ajout de la directive date.timezone dans php.ini

On commence par trouver le fichier php.ini qui est actuellement utilisé par le serveur. Il en existe plusieurs, suivant les modules activés donc on commence par repérer le bon avec :

php -i | grep 'Configuration File'Code language: JavaScript (javascript)

Résultat :

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0Code language: JavaScript (javascript)

Effectivement, l’erreur est répétée même dans un simple phpinfo(). On édite donc notre fichier :

nano /etc/php5/cli/php.ini

La page de manuel des timezones nous indique toute la liste des fuseaux horaires disponibles. Nous choisissons celle qui correspond à l’emplacement de notre serveur : ‘Europe/Paris’.

On recherche la bonne directive avec Ctrl + W et en tapant :

date.

On trouve alors :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =Code language: JavaScript (javascript)

qu’il faut modifier en :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = 'Europe/Paris'Code language: JavaScript (javascript)

On relance Apache pour prendre en compte la nouvelle configuration :

service apache2 restart

Lire la suite

Linux : installation d'une carte WiFi b/g/n Broadcom 43222 photo

Linux : installation d’une carte WiFi b/g/n Broadcom 43222

Aujourd’hui, je me suis encore amusé à mettre à jour mon portable Toshiba de 2005 : après lui avoir mis un SSD et Linux Mint, je lui ai offert une carte WiFi Broadcom 43222, en remplacement de l’Intel WM3B2200BG d’origine.

wifi-broadcom-BCM43222

Je me suis aperçu que c’était difficile pour cette machine de capter le signal WiFi, que ce soit à la maison ou lorsque je suis à l’étranger : il n’y a rien de plus vexant que d’amener sa machine et de ne pas pouvoir se connecter au réseau.

Changer une carte réseau sur un ordinateur portable n’a rien de bien compliqué mais il m’a fallu du temps pour trouver une carte de remplacement compatible : toutes les nouvelles cartes sont en PCI-Express maintenant, or mon Toshiba n’accepte que du Mini-PCI Type III.

La carte Broadcom est la seule que j’ai trouvé qui fasse WiFi N et qui soit en Mini-PCI, je l’ai achetée pour une dizaine d’euros sur Ebay.

Par conséquent, voici un petit tutoriel qui montre comment changer une carte WiFi sur un Toshiba Satellite.

Etape 1 : démontage et remplacement de la carte

On commence par la base : on éteint la machine, on enlève le courant et on retire la batterie. Et on touche un objet métallique pour décharger l’électricité statique, on ne sait jamais.

Voici quelques images intéressantes pour le démontage du Toshiba Satellite.

1. Retourner le laptop pour avoir accès aux modules et enlever la batterie.

2. Retirer la vis du module WiFi.

3. Déconnecter les câbles de l’antenne de la carte. Le fil blanc va sur MAIN et le fil noir sur AUX.

4. Retirer la carte WiFi. Il suffit d’écarter simplement les deux pattes qui la retiennent : elle va se lever doucement et vous pourrez la retirer doucement. Il ne faut surtout pas utiliser la force : juste écarter les deux pattes et lever la carte.

5. Insérer la nouvelle carte. Elle est plus compacte donc aucun souci pour la placer. Remettre les deux fils d’antenne. Revisser le compartiment.

Etape 2 : installation des pilotes

Une fois la carte changée, un reboot et vous vous apercevez que nous n’avez plus le WiFi ? C’est normal, la nouvelle carte nécessite des pilotes qui ne sont pas installés par défaut… il faut donc passer par une connexion Ethernet le temps de les installer.

Je n’avais pas anticipé cela quand j’avais commencé le tutoriel mais étant chez moi, cela n’a pas posé de souci. C’est une chose importante à souligner toutefois.

Notre nouvelle carte est normalement gérée par les pilotes b43. On peut le vérifier avec cette commande :

sudo lspci -vnn -d 14e4:

qui retourne ceci :

06:02.0 Network controller [0280]: Broadcom Corporation BCM43222 Wireless Network Adapter [14e4:4350]Code language: CSS (css)

La dernière partie entre crochet – 4350 – signifie que nous avons bien affaire à une carte Broadcom BCM43222, prise en charge depuis la version 3.8 des pilotes, et capable de WiFi a/b/g/n.

Lire la suite

soa-s7

Sons of Anarchy saison 7

Voici la septième et dernière saison de Sons of Anarchy sur FX.

C’est la dernière saison de la série. De retour en prison, Jax va rapidement retrouver le chemin de la liberté et reprendre en main le contrôle de son club alors que tous les gangs de la région s’apprêtent à entrer en guerre.

La police n’a aucune piste concernant le meurtre de tara. Un nouveau shérif arrive à Charming et Patterson demande à Unser de lui laisser gérer les relations avec le club.

Jax essaie de former des alliances avec les gangs rivaux qu’il a aliéné alors qu’il voulait rentrer dans la légalité. Etre dans la légalité est une erreur qu’il se jure de ne plus commettre alors qu’il prend la direction de la table du club.

Les beaux discours sur la nécessité de s’éloigner de la violence partent en fumée, de nouveaux visages sont introduits et le business reprend tranquillement.

Marilyn Manson a un caméo et joue le rôle d’un drogué qui est un membre éminent d’une secte néo-nazie en prison. Lea Michele,- l’actrice de Glee -, joue un rôle en tant que serveuse et mère célibataire dans un restaurant routier.

Lire la suite

Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL photo

Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL

TLS est activé sur notre serveur Apache, WordPress sert désormais ses pages avec une connexion chiffrée et Webmin se sert de notre certificat SSL.

Aujourd’hui, je cherche à lancer le client bittorent Transmission et… je tombe sur un message d’erreur qui m’empêche d’accéder son interface web : “Error code: ssl_error_rx_record_too_long”.

transmission-icon

Voici donc comment corriger le problème et afficher l’interface Web de Transmission en HTTPS. Ce tutoriel prend moins de 10 minutes à réaliser.

Erreur : “SSL received a record that exceeded the maximum permissible length”

Le premier message d’erreur sur lequel je tombe est le suivant :

Secure Connection Failed

An error occurred during a connection to www.example.com:9091. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)

Je commence par vérifier le fichier de configuration de Transmission et m’aperçoit assez rapidement qu’il ne sera d’aucun secours.

Une recherche sur le net m’informe qu’il faut probablement voir du côté de la configuration Apache – qui ne contenait jusqu’alors aucune référence à Transmission.

Plusieurs essais de configuration plus tard, l’erreur se transforme en erreur 409.

Erreur “409: Conflict”

Le second message auquel je me heurte est le suivant :

409: Conflict

Your request had an invalid session-id header.

To fix this, follow these steps:

When reading a response, get its X-Transmission-Session-Id header and remember it
Add the updated header to your outgoing requests
When you get this 409 error message, resend your request with the updated header

This requirement has been added to help prevent CSRF attacks.

C’est la première fois que je tombe sur une erreur 409, je suis plutôt content. Je continue donc de tester diverses directives Apache jusqu’à trouver la bonne recette pour faire fonctionner le client web UI de Transmission over SSL.

Lire la suite

Amit Trivedi and Mame Khan - Chaudhary photo

Amit Trivedi and Mame Khan – Chaudhary

Amit Trivedi, auteur et compositeur indien, est accompagné par Mame Khan au chant (en Hindi et Marwari) dans cette magnifique chanson qu’est Chaudhary.

La demoiselle demande à son amoureux “Chaudhary” (titre donné à un propriétaire terrien qui fait partie des clans ethniques du Rajasthan et d’Haryana) de ne plus tester sa patience et de vite la rencontrer. Elle est tellement impatiente de le voir, de lui montrer combien elle est heureuse et comment son amour est devenu le fil de sa vie.

Exaltée, elle se compare à la lumière, puis à la lune et lui dit que son coeur est en trance depuis qu’il est apparu dans sa vie. Elle l’attire en l’invitant à partager du Daal-Bhaati – un plat sucré – qu’elle a spécialement préparé pour lui juste pour avoir l’occasion de le revoir.

Elle dit qu’elle a ajouté beaucoup de Ghee (du beurre) dans le plat pour y ajouter du goût, tout comme son amour pour elle a embelli tout son être.

Amit Trivedi et Mame Khan sont accompagnés par tout un orchestre, dont les traditionnels khartal et sarangi, auxquels s’ajoutent les percussions et les guitares, ce qui nous donne une magnifique musique folk du Rajasthani.

Serveur dédié : configurer Webmin en TLS avec un certificat SSL photo 1

Serveur dédié : configurer Webmin en TLS avec un certificat SSL

webmin-logo

Après avoir ajouté la couche TLS/SSL au serveur Apache puis configuré WordPress pour fonctionner uniquement en HTTPS, je me suis intéressé à Webmin.

Je n’utilise pas Webmin pour configurer le serveur parce que c’est une sacrée usine à gaz mais pour certaines choses, c’est utile.

Erreur Webmin : Secure Connection Failed

Après le passage aux connexions sécurisées, j’ai obtenu l’erreur suivante :

Secure Connection Failed

An error occurred during a connection to example.com:10000. The server presented a certificate with a key size that is too small to establish a secure connection. (Error code: mozilla_pkix_error_inadequate_key_size)

En substance, ce message d’erreur indique que la clé du certificat créé par Webmin lors de son installation est trop faible par rapport aux nouvelles exigences de notre certificat. Pas de problème, il suffit de créer un certificat spécialement pour Webmin.

Lire la suite

from-there-to-here

From There to Here saison 1

From There to Here est une série avec Philip Glenister, diffusée sur BBC One.

La série réunit Philip Glenister et sa collègue de Life On Mars, Liz White, ainsi que Bernard Hill (Five Days, Lord Of The Rings), Steven Mackintosh (Inside Men), Saskia Reeves (Luther), Daniel Rigby (Big School) et Morven Christie (Hunted).

Une bombe à Manchester

L’histoire de From There To Here commence en juin 1996, le jour où une bombe de l’IRA détruit une grosse partie du centre de Manchester, et correspond aussi à l’été où l’Angleterre était unie pour l’Euro 96 – la 10e édition du Championnat d’Europe de football.

Le récit, qui se déroule sur 4 ans, raconte l’histoire d’une ville, mais aussi celle de deux familles qui vont se retrouver connectés suite à l’explosion de la bombe.

Philip Glenister campe Daniel Cotton, le fils de Samuel (Bernard Hill). Les deux hommes dirigent ensemble une fabrique de bonbons. Daniel est l’heureux époux de Clare (Saskia Reeves), avec laquelle il a eu deux enfants, Charlie (Daniel Rigby) et Louise (Morven Christie).

Son frère Robbo (Mackintosh) ne s’entend par contre pas très bien avec son père et il est impliqué dans la vie urbaine de Manchester où il tient un night-club. Aux côtés de Joanne (Liz White), une femme de ménage, Daniel, Samuel et Robbo vont frôler la mort et cela va changer leurs vies, à l’image de la ville qui va devoir se reconstruire après ce tragique évènement.

Lire la suite

Serveur dédié : passer WordPress en HTTPS (TLS/SSL) photo

Serveur dédié : passer WordPress en HTTPS (TLS/SSL)

Vous avez sauté le pas et avez validé votre nom de domaine avec un certificat TLS/SSL. Très bien ! Voyons comment passer WordPress sur la version sécurisée de votre site.

Il existe des plugins WordPress entièrement dédiés à SSL pour rediriger vers les pages sécurisées mais on peut très bien faire sans, avec un peu d’huile de coude.

Le tutoriel est pour Debian et WordPress tourne sous Apache chez moi. Cela prend moins d’une heure pour configurer l’essentiel mais il est probable que vous ayez des petites corrections (thèmes, plugins) pour que tout soit servi en https.

Le but est de tout (oui, absolument tout!) servir via la connexion sécurisée.

Étape 1 : configurer Apache

On édite notre fichier de configuration :

nano /etc/apache2/sites-available/www.skyminds.net

et voici ce que garde pour VirtualHost *:80 :

ServerName www.skyminds.net
ServerAlias skyminds.net
DocumentRoot /home/skyminds/public_html/
Redirect 301 / https://www.skyminds.net/Code language: JavaScript (javascript)

La directive ServerName est nécessaire. Ensuite, une simple redirection renvoie toutes les requêtes du port 80 vers le port 443, sécurisé. Même pas besoin de mod_rewrite!

Lire la suite