AFUP Forum PHP 2018 Baromètre Planète PHP
planete-php.fr Articles Blogs Infos RSS Feed Atom Feed Twitter

Articles

Paquets PHP suplémentaires pour RHSCL

Remi Collet 21/09/18

Point de situation sur les dépôts officiels fournissant les Software Collections de PHP pour les utilisateurs de RHEL et de CentOS.

Depuis la publication de RHSCL 3.0, les utilisateurs de RHEL peuvent installer PHP 5.6, PHP 7.0 ou PHP 7.1 sans altérer leur système en utilisant le canal approprié.

Ces paquets sont aussi disponibles pour les utilisateurs de CentOS dans les dépôts SCL, géré par le groupe d'intérêt SCLo (SCLo SIG) :

# yum --enablerepo=extras install centos-release-scl

Le project CentOS fournit donc l'infrastructure et l'hébergement de 4 dépôts:

  • centos-sclo-rh : fournissant le même contenu que RHSCL
  • centos-sclo-sclo : fournissant des collections supplémentaires maintenues par la communauté
  • centos-sclo-rh-testing : fournissant les paquets à tester (version beta de RHSCL)
  • centos-scl-sclo-testing : fournissant les paquets à tester maintenus par la communauté

Les utilisateurs de RHSCL souhaitant utiliser les paquets supplémentaires peuvent configurer le dépôt centos-sclo-sclo en utilisant le dépôt Copr centos-release-scl :

# cd /etc/yum.repos.d/
# wget https://copr.fedorainfracloud.org/coprs/rhscl/centos-release-scl/repo/epel-7/rhscl-centos-release-scl-epel-7.repo
# yum install centos-release-scl

Si vous êtes intéressés par ces paquets, je vous recommande de suivre la liste de diffusion sclorg@redhat.com ou sont discutés les éventuels problèmes et annoncées les évolutions. Merci d'utiliser cette liste pour vos retours (paquets en test) et toute autre demande. Les nouveaux contributeurs sont aussi les bienvenus.

Information et documentation sur https://www.softwarecollections.org/.

Le développement est suivi sur le git de sclorg-distgit.

Pour information, voici les paquets supplémentaires disponibles dans centos-sclo-sclo le 21 septembre 2018:

#   Paquet Version Distribution Remarques
 

Voir la suite

Des nouveautés au Forum PHP 2018

AFUP 20/09/18

Visitez le village des antennes ! Venez rencontrer les responsables des antennes AFUP sur leur stand dédié au sein du hall sponsors. Ils vous diront tout ce qu'ils organisent près de chez vous ! Vous pourrez également leur proposer votre aide, leur soumettre vos idées de speakers, manifester vos envies de sponsoring de leurs soirées, ou tout simplement discuter du dynamisme des entreprises PHP de leur région... Le tout autour de quelques spécialités locales rapportées spécialement pour nos visiteurs.
Le planning des présences sera diffusé sur les écrans au sein du hall sponsors ainsi que sur le village des antennes.

Confiez-vous à notre coach OSS ! Vous aimeriez vous investir dans l'open source mais vous ne savez pas par où commencer ? Vous avez des questions sur le sujet mais vous ne savez pas à qui les poser ? Venez vous confier à nos coachs OSS ! Facilement repérables grâce à leur casquette, nos 4 experts se tiendront à votre disposition à chaque pause pour répondre à toutes vos interrogations sur l'OSS et pour vous encourager à vous lancer. N'hésitez pas à aller leur faire part de vos petits ou grands soucis, ils sont là pour vous aider.

Profitez de notre chill zone ! Un espace de discussion où vous pourrez vous asseoir et recharger vos batteries (les vôtres ou celles de vos machines) est mis à disposition cette année au sein du hall sponsors. C'est aussi dans cet espace que se promèneront nos coachs OSS en service !

Alors, convaincu·e ? Prenez votre place maintenant : nous attaquons la dernière centaine de places disponibles pour l'événement ! Ne tardez plus à prendre votre place pour le Forum PHP 2018.

Installer un debugger avec Laragon et PHP Storm

Yohann Nizon (Game And Me) 18/09/18

Lorsque vous faites du Java, vous avez accès automatiquement à des outils de débuggage avec Eclipse ou IntelliJ. Cela vous permet de placer des points d’arrêt, de suivre l’évolution de vos variables… Mais en PHP, les projets restent généralement moins compliqués, et beaucoup de développeurs codent encore sous Notepad++. Bref, je vous propose ici, un ... Lire la suite

Cet article Installer un debugger avec Laragon et PHP Storm est apparu en premier sur Game And Me.

L'AFUP lance la nouvelle édition du baromètre des salaires PHP en collaboration avec le Journal du Net

AFUP 17/09/18

Nous vous invitons à répondre dès maintenant à l'enquête pour cette année 2018 : promis, cela prend moins de 5 minutes.

Le baromètre des salaires AFUP permet aux développeuses et développeurs PHP d'avoir une vision sur la rémunération dans leur secteur. Il permet, entre-autres :
- de connaître les spécialités les plus attractives ;
- de se comparer par rapport à la moyenne ;
- de mettre en évidence des tendances régionales.

Avoir une enquête chaque année permet de faire un état des lieux régulier du secteur, de répondre régulièrement à des questions comme le cadre de travail, le type d’entreprise, les versions de PHP, et ainsi en suivre l’évolution. Si vous avez répondu les années précédentes, vos réponses sont cruciales pour déterminer de telles évolutions (même si elles sont identiques à la précédente enquête).

Plus il y aura de réponses, meilleure sera l’interprétation des résultats : nous comptons donc aussi sur vous, qui n’avez jamais répondu pour prendre ces quelques minutes afin de répondre à l’enquête et ainsi permettre à la communauté de mieux se connaître.

L’année dernière nous avions plus de 900 réponses et espérons encore faire grimper ce nombre cette année. Les résultats seront publiés en début d’année 2019. N'hésitez pas à parler du baromètre autour de vous, discutez-en avec vos collègues : plus il y aura de réponses, meilleures en seront les analyses.

Les résultats des enquêtes précédentes sont consultables. Vous y trouverez des synthèses pour chacun année et vous pourrez plonger dans les données par vous-même pour étudier le marché.

Introducing Symfony Panther: a Browser Testing and Web Scraping Library for PHP

Kévin Dunglas (Lapin Blanc) 12/09/18

Today, an introduction blog post to Panther was published on the Symfony blog! Panther is a new browser testing and web scraping library I contributed to the Symfony project,
In the blog post, I showcase how to use Symfony, API Platform and VueJS together to create a small but modern app, and how to test it on Panther:

Nouveautés de PHP 7.3

Code Design 05/09/18

Pendant que la nouvelle version de PHP est en préparation pour le 13 décembre 2018, découvrons ensemble les nouveautés de PHP 7.3 à travers la dernière BETA sortie le 30 août 2018.

Environnement de test

Avant de commencer, nous allons voir rapidement comment tester différentes versions de PHP. Voyons comment installer parallèlement PHP 7.3 et PHP 7.2 (qui nous servira de référence). La procédure ci-dessous a été faite sous Windows pour le plus grand nombre mais peut être menée sous Linux ou MacOS.

Nous allons ensuite extraire chaque archive dans un dossier différent :

  • Créer un dossier /PHP7.2/ pour y placer le contenu de l’archive PHP 7.2.10 RC1
  • Créer un dossier /PHP7.3/ pour y placer le contenu de l’archive PHP 7.3 BETA 3
  • Créer un dossier /src/ dans lequel vous pouvez mettre vos scripts de test.

Nous pouvons maintenant démarrer notre serveur de test PHP 7.2 grâce au serveur web intégré à PHP. Dans l’invite de commande, lançons un premier serveur web sur http://localhost:8072

\PHP7.2\php.exe -t src\ -S localhost:8072

Lançons un serveur de test PHP 7.3 sur un numéro de port différent dans une seconde invite de commande. Le serveur PHP 7.3 sera accessible à l’adresse http://localhost:8073

\PHP7.3\php.exe -t src\ -S localhost:8073

Nous sommes maintenant près à dépiler les fonctionnalités décrites dans les RFC de PHP 7.3 : https://wiki.php.net/rfc#php_73

Syntaxes Heredoc et Nowdoc plus flexibles

RFC : https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes
Documentation : http://php.net/manual/fr/language.types.string.php#language.types.string.syntax.heredoc

En PHP, il existe de nombreuses manières de déclarer des chaines de caractères, des string . Vous connaissez les apostrophes simples, les doubles apostrophes, mais connaissez-vous les syntaxes Heredoc et

Voir la suite

Client Sentry pour .NET 2.0

Maxence Delannoy (Wiip) 31/08/18

Logo Sentry

Je suis un grand fan du service Sentry qui sert à envoyer des rapports d'erreur.

A chaque fois qu'une erreur inattendue survient dans une de mes applications, un certain nombre d'informations sont collectées (le type et le message de l'exception, la pile d'appel, la version du système d'exploitation, le nom de l'utilisateur...) puis envoyées aux serveurs de Sentry.

Chaque événement est regroupé avec d'autres événements similaires (même type d'exception, même message) pour former un "problème". Je peux ainsi localiser la source de l'erreur et la corriger sans avoir à attendre que l'utilisateur me communique les détails du problème.

Dernièrement, j'avais une petite mise à jour à effectuer sur une ancienne application qui avait été développée à l'époque avec le .NET framework 2.0. Je me suis dit que ce serait bien de mettre en place la collecte des erreurs avec Sentry de façon et je fait donc une recherche dans NuGet pour télécharger et installer SharpRaven, qui est le client C# pour Sentry, dans mon application. Le problème c'est qu'il n'est disponible qu'à partir de .NET 4.0. Mettre à jour l'application s'avérant compliqué, je m'apprêtais à laisser tomber. Mais en y réfléchissant, l'envoi des données devait certainement se faire avec une simple requête HTTP et donc ça ne devait pas être si compliqué que ça à faire. J'ai donc commencé à lire la documentation du SDK.

Quelques minutes plus tard je parvenais à créer mon premier événement. Il m'a fallu un peu plus de temps pour peaufiner quelques détails, mais au final j'étais en mesure d'intégrer le support de Sentry dans mon application .NET 2.0.

Voici le code, peut-être qu'il vous sera utile si vous ne pouvez pas, pour une raison ou une autre, utiliser SharpRaven :

class RavenClient
{
    class Packet
    {
        public string Message { get; set; }
 
        public string Platform { get; set; }
 
        public ExceptionInterface Exception { get;  } = new ExceptionInterface();
 
        public IDictionary<string, string> Modules { get; } = new SortedDictionary<string, string>();
 
        public string Release { get; set; }
 
        public User User { get; } = new User();
 
        public string ServerName { get; set; }
    }
 
    class User
    {
        public string Username { get; set; }
    }
 
    class SentryStackTrace
    {
        public List<Frame> Frames { get; } = new List<Frame>();
    }
 
    class ExceptionValue
    {
        public string Type { get; set; }
 
        public string Value { get; set; }
 
        public SentryStackTrace Stacktrace { get; } = new SentryStackTrace();
    }
 
    class ExceptionInterface
    {
        public List<ExceptionValue> Values { get; } = new List<ExceptionValue>();
    }
 
    class Frame
    {
        public string Filename { get; set; }
 
        public string Function { get; set; }
 
        public string Module { get; set; }
 
        public int Lineno { get; set; }
 
        public int Colno { get; set; }
 
        public string Package { get; set; }
 
        public string Source { get; set; }
 
        public string InstructionOffset { get; set; }
    }
 
    class Response
    {
        public string Id { get; set; }
    }
 
    #region Fields
 
    readonly string uri;
 
    readonly string publicKey;
 
    readonly string projectId;
 
    #endregion
 
    #region Constructors
 
    public RavenClient(string dsn)
    {
        if (dsn == null) throw new ArgumentNullException(nameof(dsn));
 
        var dsnAsUri = new Uri(dsn);
        uri = dsnAsUri.

Voir la suite

Sentry client for .NET 2.0

Maxence Delannoy (Wiip) 31/08/18

Logo Sentry

I'm a big fan of the Sentry service which is used to send error reports.

Each time an unexpected error occurs in one of my applications, a certain amount of information is collected (exception type and message, call stack, operating system version, user name...) then sent to Sentry's servers.

Each event is grouped with other similar events (same exception type, same message) to form a "problem". I can then locate the source of the error and correct it without having to wait for the user to give me the details of the problem.

Lately, I had a small update to do on an old application that had been developed at the time with the .NET 2.0 framework. I thought it would be nice to set up error collection with Sentry. So I search NuGet to download and install SharpRaven, which is the C# client for Sentry, into my application. The problem is that it is only available from .NET 4.0. Updating the application proved complicated, so I was about to drop it. But when you think about it, sending the data certainly had to be done with a simple HTTP request and so it couldn't have been that complicated to do. So I started reading the SDK documentation.

A few minutes later I managed to create my first event. It took me a little longer to fine-tune a few details, but in the end I was able to integrate Sentry support into my NET 2.0 application.

Here is the code, maybe it will be useful if you can't, for one reason or another, use SharpRaven :

class RavenClient
{
    class Packet
    {
        public string Message { get; set; }
 
        public string Platform { get; set; }
 
        public ExceptionInterface Exception { get;  } = new ExceptionInterface();
 
        public IDictionary<string, string> Modules { get; } = new SortedDictionary<string, string>();
 
        public string Release { get; set; }
 
        public User User { get; } = new User();
 
        public string ServerName { get; set; }
    }
 
    class User
    {
        public string Username { get; set; }
    }
 
    class SentryStackTrace
    {
        public List<Frame> Frames { get; } = new List<Frame>();
    }
 
    class ExceptionValue
    {
        public string Type { get; set; }
 
        public string Value { get; set; }
 
        public SentryStackTrace Stacktrace { get; } = new SentryStackTrace();
    }
 
    class ExceptionInterface
    {
        public List<ExceptionValue> Values { get; } = new List<ExceptionValue>();
    }
 
    class Frame
    {
        public string Filename { get; set; }
 
        public string Function { get; set; }
 
        public string Module { get; set; }
 
        public int Lineno { get; set; }
 
        public int Colno { get; set; }
 
        public string Package { get; set; }
 
        public string Source { get; set; }
 
        public string InstructionOffset { get; set; }
    }
 
    class Response
    {
        public string Id { get; set; }
    }
 
    #region Fields
 
    readonly string uri;
 
    readonly string publicKey;
 
    readonly string projectId;
 
    #endregion
 
    #region Constructors
 
    public RavenClient(string dsn)
    {
        if (dsn == null) throw new ArgumentNullException(nameof(dsn));
 
        var dsnAsUri = new Uri(dsn);
        uri = dsnAsUri.

Voir la suite

Ma station de travail PHP

Remi Collet 29/08/18

Je vois régulièrement passer des questions sur l'utilisation d'anciennes versions de PHP sur Fedora (qui fournit la 7.0) 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 25 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-25.rpm
# dnf install remi-release-25.rpm
# dnf config-manager --set-enabled remi

Pour RHEL ou CentOS, lisez les instructions de l'assistant de configuration.

 

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, 7.0, 7.1 et 7.2 sont disponibles dans mon dépôt, donc:

# yum install php56 php56-php-fpm php56-php-mbstring php56-php-mysqlnd ...
# yum install php70 php70-php-fpm php70-php-mbstring php70-php-mysqlnd ...
# yum install php71 php71-php-fpm php71-php-mbstring php71-php-mysqlnd ...
# yum install php72 php72-php-fpm php72-php-mbstring php72-php-mysqlnd ...
# yum install php73 php73-php-fpm php73-php-mbstring php73-php-mysqlnd ...


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

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.

Voir la suite

PHP en route vers la sortie de la version 7.3.0

Remi Collet 22/08/18

La version 7.3.0beta2 vient juste d'être publiée. C'est maintenant la phase de stabilisation qui commence pour les développeurs, et de test pour les utilisateurs.

Les RPM sont disponibles dans le dépôt remi-php73 pour Fedora  27 et et Enterprise Linux  6 (RHEL, CentOS) ainsi qu'en Software Collection dans le dépôt remi-safe (ou remi pour Fedora).

 

emblem-important-4-24.pngLe dépôt contient actuellement des versions en cours de développement qui ne sont pas destinées à être utilisées en production.

Lire aussi : PHP 7.3 en Software Collection

emblem-notice-24.pngInstallation : voir la Configuration du dépôt et choisir le mode d'installation.

Remplacement du PHP par défaut du système par la version 7.3 (le plus simple) :

yum-config-manager --enable remi-php73
yum update php\*

Installation en parallèle, en Software Collection de PHP 7.3 (x86_64 uniquement, recommandée pour les tests) :

yum install php73

emblem-important-2-24.pngÀ noter :

  • la version EL7 est construite avec RHEL-7.5
  • la version EL6 est construite avec RHEL-6.10
  • beaucoup d'extensions sont aussi disponibles, voir la page PECL extension RPM status.
  • suivre les commentaires pour les mise à jour jusqu'à la version finale.

emblem-notice-24.pngInformations, lire :

Paquets de base (php)

Voir la suite

Blogs

Infos

Ajouter une source ?

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

Gestion

AFUP