planetePHP.fr
AFUP AFUP 2016-04-21T00:00:00+02:00

Pour des devs au top et superboostés, envoyez-les au PHP Tour Clermont-Ferrand 2016

Certes, le programme est alléchant : un focus sur la performance en PHP, des speakers de renom tels que Derick Rethans, Fabien Potencier, Julien Pauli, Remi Collet ou Rob Morgan, des talks dédiés aux dernières innovations du langage… La programmation concoctée en collaboration avec l’association locale Clermont’ech tient ses promesses !

Mais venir au PHP Tour Clermont-Ferrand 2016 est avant tout l’occasion pour les développeurs de se rafraîchir les idées sur le langage, son utilisation et son application dans le monde de l’entreprise. Rien de tel que de retrouver la communauté, d’échanger avec d’autres professionnels, de rencontrer les sociétés et les chefs de projet du secteur, pour revenir au bureau avec la motivation, les idées et une vision actualisée, nécessaires pour s’attaquer aux projets en cours.

Le programme des deux jours du cycle de conférences est idéal pour cela ! Profitez des ateliers pratiques gratuits pour vous perfectionner sur un sujet précis : deux workshops sont organisés sur Docker, par les experts PHP Pascal Martin et Joël Wurtz. Un troisième atelier, animé par Philippe Krenn, est dédié à Elasticsearch. Chaque session dure 3h, se déroule en petit groupe, et vous permet de vous entraîner en temps réel sur votre propre machine : l’idéal pour progresser rapidement. Informations et réservations par ici.

De nombreux retours d’expérience sont également proposés : les devs de Decitre.fr, de “La Ruche qui dit Oui !”, et bien d’autres, vous raconteront leur histoire. Vous rentrerez chez vous en vous disant “Mais bien sûr, c’est comme ça qu’il faut faire !”.

Le traditionnel apéro communautaire se tiendra dans le centre-ville le soir du lundi 23 mai, et sera l’occasion idéale pour mettre des visages sur des noms, pour débriefer des conférences de la journée, et pour confronter les visions et les pratiques, dans une ambiance conviviale et décontractée.

Enfin, pauses et déjeuners sur place permettront à chacun de rencontrer les différents sponsors, découvrir leurs produits, discuter avec eux et s’informer. En bref, profitez-en pour faire de la veille technique…

Rien de tel donc pour votre performance et votre productivité que de rejoindre le PHP Tour Clermont-Ferrand 2016, le RDV incontournable du printemps des développeurs et PHP lovers :

la suite...

Remi Collet Remi Collet 2016-04-20T18:57:53+02:00

Ma station de travail PHP

Je vois régulièrement passer des questions sur l'utilisation d'anciennes versions de PHP sur Fedora (qui fournit la 5.6) ou de versions plus récentes sur RHEL / CentOS (qui fournit la 5.4).

Un développeur utilisant PHP a souvent besoin de tester son travail avec plusieurs versions. Donc voici un petit descriptif de la station de travail que j'utilise quotidiennement

Système d'exploitation : Fedora 23 Workstation x86_64 (mais les exemples fonctionnent aussi sur RHEL ou CentOS 7)

Dépôts tiers : rpmfusion (pour écouter de la musique en travaillant) et évidement remi

# wget http://rpms.remirepo.net/fedora/remi-release-23.rpm
# dnf install remi-release-23.rpm
# dnf config-manager --set-enabled remi

 

Installation des versions de PHP

J'utilise les Software Collections qui permettent d'installer plusieurs versions en parallèle sans toucher au système de base, les versions de PHP 5.4, 5.5, 5.6 et 7.0 sont disponibles dans mon dépôt, donc:

# yum install  php54 php54-fpm php54-php-mbstring php54-php-mysqlnd ...
# yum install  php55 php55-fpm php55-php-mbstring php55-php-mysqlnd ...
# yum install  php56 php56-fpm php56-php-mbstring php56-php-mysqlnd ...
# yum install  php70 php70-fpm php70-php-mbstring php70-php-mysqlnd ...

Les utilisateurs de RHEL peuvent aussi utiliser les SCL officielles disponible dans le canal RHSCL (php54, php55 et rh-php56).

Les utilisateurs de CentOS peuvent aussi utiliser les SCL, maintenues par le SIG, disponibles dans le dépôt centos-sclo-sclo.

 

Configuration de l'environnement Web

PHP FastCGI Process Manager

Je n'utilise pas mod_php qui n'autorise qu'une seule version du module, mais FPM.

Je ne suis pas en production mais sur une station de développement, donc afin de limiter la charge, je modifie la configuration de chaque FPM pour utiliser le mode "ondemand". J'utilise aussi un port réseau différent pour chaque version

Example, pour PHP 7.0, dans le fichier /etc/opt/remi/php70/php-fpm.d/www.conf

listen = 127.0.0.1:9070
pm = ondemand

Je configure le port pour SELinux

# semanage port -a -t http_port_t -p tcp 9070

Et ensuite j'active le service

# systemctl start php70-php-fpm
# systemctl enable php70-php-fpm

Et j'applique pour chaque version.

Apache

Je crée 1 hôte virtuel pour chaque version de PHP

Dans le fichier /etc/hosts, déclaration des alias IP

192.

la suite...

Pascal Martin (n+1).zéro Pascal Martin (n+1).zéro 2016-04-14T00:00:00+02:00

Les directives INI, c'est le mal !

Plusieurs fois, alors que des évolutions étaient discutées pour PHP 7, j’ai assisté à des échanges où un intervenant proposait de rendre optionnelle une nouvelle fonctionnalité1, par le biais d’une directive de configuration INI — l’idée étant que chacun pourrait alors l’activer ou non.

Mais le principe même de directives permettant de changer, parfois en profondeur, le comportement d’un langage de programmation… J’en ai des frissons !


Imaginez un langage2 créé pour faciliter la mise en place de formulaires HTML et le traitement des données saisies.

Pour aider les débutants n’ayant aucune notion de sécurité, et puisque l’utilisation de MySQL pour le stockage de données est à la mode, les développeurs de ce langage mettent en place une option qui, une fois activée, entraine l’ajout automatique d’un \ devant tous les guillemets ' arrivant en entrée3 (GET/POST/…).

Bien sûr, une partie des administrateurs système active immédiatement cette directive, puisqu’elle améliore considérablement la sécurité4 en empêchant certaines injections SQL. Mais d’autres administrateurs la désactivent, puisque c’est à chaque développeur de savoir gérer ses données : le langage ne doit pas les modifier à la volée !

Et là, une application donnée fonctionnera parfaitement sur un serveur, alors qu’elle fera n’importe quoi sur un autre — soit en injectant des \ partout, soit en explosant violemment sur la moitié de ses requêtes SQL ! Elle n’aura en effet pas été spécifiquement développée pour tenir compte des différentes combinaisons d’options de configurations.

Vous en rêviez ? Bienvenue dans l’enfer des magic quotes5 !

Dans le même genre, vous vous souvenez de register_globals, où des variables apparaissaient par magie dans vos scripts, pour peu que cette directive soit activée ? C’était d’enfer !


Revenons à une période un peu plus proche : chaque fois qu’une directive de configuration est ajoutée à PHP6, cela signifie :

  • Plusieurs branches de code à tester, déboguer, maintenir.

la suite...

AFUP AFUP 2016-04-05T00:00:00+02:00

L'AFUP partenaire de Drupagora

La prochaine édition de Drupagora se tiendra à l'Université Pierre et Marie Curie, Paris 5ème, le vendredi 3 juin de 9h à 18h.

La conférence se déroule sur une journée. Mathieu Gros, CEO d'Actency, agence web spécialisée Drupal, apporte toute son expertise pour l'édition 2016.  Succédant à Frédéric Plais, CEO de Platform.sh, il a eu cette année pour mission de définir les grandes thématiques du programme et sélectionnera, avec le comité de pilotage, les intervenants pour cette nouvelle édition.

Cette année, le fil rouge du programme est : Drupal, une valeur sûre pour la transformation digitale des entreprises. Avec pour thématiques principales :
- Les exigences d’internet d’aujourd’hui et de demain : Comment y répond Drupal 8 avec ses innovations et ses avantages ?
- Les capacités de Drupal 8 en condition réelle : les projets, des démos et des témoignages.
- L'industrialisation et la performance de Drupal dans des écosystèmes complexes : CIT, DEVOPS, intégration avancée, etc.
- Comment Drupal participe efficacement à la digitalisation des entreprises : Bigdata, Webfactory, Mobilité, Applications avancées, etc..

Les inscriptions à Drupagora sont ouvertes au tarif early bird : profitez de ce tarif avantageux ! 40 euros jusqu'au 15/04/2016, 75 euros jusqu'au 15/05/2016, 100 euros en tarif normal

Programme et inscriptions sur drupagora.com

Remi Collet Remi Collet 2016-03-30T10:58:36+02:00

Statistiques par version de PHP

Voici quelques statistiques de téléchargement pour les différentes versions de PHP depuis le dépôt remi.

Calculées à partir des ~100k téléchargements en 1 mois.

Paquets de base (version unique)

  • 5.4.45: 32.6% (représentait 47% en octobre 2015)
  • 5.5.33: 18.9% (5.5.29 représentait 21%)
  • 5.6.19: 41.3% (5.6.13 représentait 31%)
  • 7.0.4: 7.2%

php-201603.png

Paquets SCL (installation en parallèle de plusieurs versions)

  • 5.4.45: 10.4%
  • 5.5.33: 16.6%
  • 5.6.19: 41.5%
  • 7.0.4: 31.5%

Les chiffres des SCL sont moins intéressants, car les elles sont utilisées pour avoir plusieurs versions, souvent sur une station de développement, ou pour tester une nouvelle version, ou pour conserver un ancienne version pour une ancienne application.

Conclusion: l'utilisation de 5.4 reste beaucoup trop élevé pour une version morte (non maintenue), même si l'intègre quelques correctifs de sécurité dans mes paquets (rétro-porté depuis 5.5), je recommande vivement de faire la mise à jour vers une version maintenue, 5.5 (fin de vie en juillet 2016) ou mieux 5.6 (fin de vie en Decembre 2018).

 

 

AFUP AFUP 2016-03-30T00:00:00+02:00

Assistez à l'un des workshops du PHP Tour Clermont-Ferrand 2016 : inscriptions ouvertes

Les ateliers vous proposent d'apprendre, en compagnie d'un expert PHP, pendant 3h, en petit groupe, et sur votre propre machine. 

Trois ateliers vous sont proposés les 23 et 24 mai : vous avez votre place pour l'événement ? Alors prenez à présent votre billet pour l'un des workshops suivants ! C'est gratuit sur réservation (dans la limite des places disponibles).

Lundi 23 mai, à 9h30, on attaque avec Philipp Krenn pour "Going Elastic", ou comment tout savoir sur l'utilisation d'Elastic. Attention, workshop en anglais !

À 14h, Joël Wurtz vous propose un atelier intitulé "PHP et Docker". Attention, cet atelier demande quelques pré-requis, consultez-les dans le descriptif de l'atelier.

Le mardi 24 mai, à 9h, Pascal Martin vous dira comment "Créer un site pour tester du code sous plusieurs versions de PHP, avec Docker". Un atelier mené par un speaker des plus fidèles de l'AFUP !

Ne manquez pas cette opportunité de vous perfectionner en compagnie des meilleurs. L'inscription à l'atelier n'est valable qu'une fois votre billet pour le PHP Tour Clermont-Ferrand est réservé : prenez votre place ! Nous nous réservons le droit d'annuler toute inscription ne respectant pas les règles d'inscription. 

Ulrich (mon-code.net) Ulrich (mon-code.net) 2016-03-29T00:00:00+02:00

Tags et CompilerPass de Symfony2 expliqués par l'exemple

Le container de dépendance est le composant central de Symfony2, tout le monde l'utilise. Moins sont les développeurs qui utilisent les tags dans la définition d'un service et malheureusement peu savent comment ça marche. C'est l'object de cet article, montrer par l'exemple l'utilité des tags et leur utilisation via le CompilerPass. Cela permet de réduire les dépendances entre les classe facilite la maintenabilité du site.
rootslabs rootslabs 2016-03-28T10:00:58+02:00

Blackfire ou comment profiler votre application PHP ?

Blackfire est un outil fourni par SensioLabs afin de profiler du code PHP, et ainsi trouver les goulots d’engorgement du code, les endroits où l’on pourrait mettre du cache, etc…
Dans cet article, nous allons voir comment l’installer via Docker, l’utiliser et un cas d’utilisation avec PHPPresentation.

Blackfire : Logo

Pré-requis

Sur la page Credentials de Blackfire, quatre clés seront disponibles :

  • Client ID ;
  • Client Token ;
  • Server ID ;
  • Server Token.

Installation de Blackfire avec Docker

Pour le fichier

docker-compose.yml
, j’ai modifié le container php, je lui ai ajouté les variables d’environnement utiles pour Blackfire.

## PHP
php:
  build: .docker/php
  restart: always
  ports:
    - "9000:9000"
  volumes:
    - ./:/var/www/local.dev
    - ./.docker/php/ini/php.ini:/usr/local/etc/php/php.ini
  environment:
    BLACKFIRE_LOG_LEVEL: 4
    BLACKFIRE_SERVER_ID: XXXXXXXXXXXXXXXXXXXXXXXX
    BLACKFIRE_SERVER_TOKEN: XXXXXXXXXXXXXXXXXXXXXXXX
  links:
    - db:db

J’ai aussi modifié le fichier Dockerfile, qui va générer le container php, en lui ajoutant les ligne en surligné pour Blackfire :

FROM php:5.6-fpm

RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
        libsqlite3-dev \
        libssl-dev \
        libcurl3-dev \
        libxml2-dev \
        libzzip-dev \
    && docker-php-ext-install iconv json mcrypt mbstring mysql mysqli pdo_mysql pdo_sqlite phar curl ftp hash session simplexml tokenizer xml xmlrpc zip \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd

RUN pecl install xdebug \
    && touch $PHP_INI_DIR/conf.d/xdebug.ini \
    && echo 'zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> $PHP_INI_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_enable=1' >> $PHP_INI_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_connect_back=1' >> $PHP_INI_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.var_display_max_depth=10' >> $PHP_INI_DIR/conf.d/xdebug.

la suite...

Nicolas Loeuillet (nico_somb) Nicolas Loeuillet (nico_somb) 2016-03-25T14:00:00+01:00

wallabag v2 et conférence au PHP Tour à Clermont-Ferrand

Lundi 23 mai, avec Jérémy, nous serons à Clermont-Ferrand pour parler de wallabag, comment on a migré vers Symfony3.

wallabag est une application opensource de lecture différée : elle vous permet de mettre de côté la version épurée d'un article pour la consulter plus tard où que vous soyez. Créée il y a 3 ans à base de fichiers PHP comme on faisait en 2005, nous avons décidé il y a maintenant un peu plus d'un an de migrer le projet à Symfony. Au cours de ce talk, nous présenterons donc le projet wallabag et tout son écosystème : son concept, son socle technique (API REST, tests unitaires, Rulerz, RabbitMQ, Capistrano), les difficultés rencontrées, la communauté et les projets qui tournent autour, la roadmap pour les semaines à venir.

D'ici là, wallabag v2 sera sortie : elle sera disponible au téléchargement en version stable le dimanche 3 avril, jour des 3 ans du projet.

Ça promet donc quelques semaines encore bien chargées.

Ah tiens, on a commandé des stickers pour le projet. J'en aurai forcément sur moi, n'hésitez pas à venir m'en demander.

Stickers wallabag

Alexis Metaireau (notmyidea.org) Alexis Metaireau (notmyidea.org) 2016-03-25T00:00:00+01:00

Avez vous confiance en SSL?

Dans le cadre des ateliers d'autodéfense numérique, j'ai passé un peu de temps à creuser sur l'utilisation de SSL puisque contrairement à ce que la plupart des personnes ont encore tendance à croire, le petit cadenas (qui prouve qu'une connexion SSL est en cours) n'est absolument pas suffisant.

Allez hop, c'est parti pour:

  • un tour d'horizon du fonctionnement de SSl
  • quelques moyens contourner cette "protection" en faisant une attaque en pratique
  • un tour des solutions existantes actuellement et de pourquoi je ne les trouve pas vraiment satisfaisantes.

Comment fonctionne SSL?

Pour expliquer les problèmes de SSL, j'ai d'abord besoin d'expliquer comment tout ça fonctionne.

SSL repose sur l'utilisation de certificats, qui sont générés par des autorités de certification (Certificate Authority que je nomme CA dans la suite de l'article).

Les certificats SSL permettent deux choses:

  • De garantir que les communications entre les navigateurs (vous) et les sites Web ne sont connues que du détenteur du certificat du site et de vous même.
  • De garantir que le site sur lequel vous vous connectez est bien celui que vous imaginez.

Le navigateur, lors d'une visite d'un site, va télécharger le certificat associé puis vérifier que le certificat en question a bien été généré par un des CA en qui il a confiance.

Imaginons maintenant qu'une des CA essaye de savoir ce qui s'échange entre mon navigateur et le site de ma banque (protégé par SSL). Comment cela se passerait il ?

N'importe quel CA peut donc générer des certificats pour n'importe quel site, et le navigateur vérifierait, lui, que le certificat a bien été généré par une CA.

Tout cela ne poserait pas de soucis si les CA étaient gérés de manière fiable, mais il s'agit d'un travail compliqué, et certains CA ont par le passé montré des faiblesses.

Par exemple, DigiNotar (un CA des Pays-Bas) a été compromise et les attaquant.e.s ont pu générer des certificats SSL frauduleux, ce qui leur a permis d'attaquer des sites tels que Facebook ou GMail.

Vous pouvez retrouver une liste des risques et menaces autour des CA sur le wiki de CACert.

Attaque de l'homme du milieu avec SSL

A force de dire que c'était très facile à faire, j'ai eu envie d'essayer d'espionner des connections protégées par SSL, et effectivement c'est carrément flippant tellement c'est simple.

En l'espace de quelques minutes, il est possible de faire une attaque de l'homme du milieu en utilisant par exemple un outil nommé

la suite...


Flux ATOM

Flux RSS
Twitter

Les sources

Ajouter une source ?

Envoyez un email avec l'URL du site et du flux à planetephpfr AT afup POINT org

Infos