<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://chez.jcdenis.fr/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jean-Christian Paul Denis - Mot-clé - php</title>
    <link>https://chez.jcdenis.fr/</link>
    <atom:link href="https://chez.jcdenis.fr/feed/tag/php/rss2" rel="self" type="application/rss+xml" />
    <description>Moment de vie d'un homme invisible.</description>
    <language>fr</language>
    <pubDate>Sun, 09 Nov 2025 09:31:14 +0100</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Plus tu pédales moins vite…</title>
        <link>https://chez.jcdenis.fr/post/2022/07/06/Plus-tu-p%C3%A9dales-moins-vite%E2%80%A6</link>
        <guid isPermaLink="false">urn:md5:d2ba4f5c26daad450db51e584145d84b</guid>
        <pubDate>Wed, 06 Jul 2022 20:40:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Dotclear</category>
                          <category>magic</category>
                  <category>method</category>
                  <category>php</category>
                <description> &lt;p&gt;…moins tu avances plus vite.&lt;/p&gt;
&lt;p&gt;Cela fait plus de six mois (de mon temps libre) que &lt;a href=&quot;https://chez.jcdenis.fr/post/2022/05/12/Dotclear-Nx-Pourquoi&quot;&gt;je bricole sans limite le code de Dotclear&lt;/a&gt; et je dois avouer que je pensais avancer beaucoup plus vite. J'avais tablé sur environ un an pour sortir une version utilisable ressemblant à ce que j'imaginais d'un Dotclear futur, avec six mois pour remodeler la structure des fichiers, classes et fonctionnement général, puis six mois pour remodeler les méthodes et &quot;tweaker&quot; tout ça.&lt;br /&gt;&lt;a href=&quot;https://chez.jcdenis.fr/public/photos/20220417-20.jpg&quot; title=&quot;20220417-20.jpg, juil. 2022&quot;&gt;&lt;figure style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://chez.jcdenis.fr/public/photos/.20220417-20_m.jpg&quot; alt=&quot;20220417-20.jpg, juil. 2022&quot; title=&quot;20220417-20.jpg, juil. 2022&quot; /&gt;&lt;figcaption&gt;Evan - Meximieux - 04/2022&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;br /&gt;Force est de constater qu'au bout de six mois (passés) je suis loin d'avoir fini la première partie. Et je ralentie. Par exemple cela fait 3 semaines que je bloque sur une simple méthode magique que je souhaite supprimer proprement... Im-pos-sible. Trop bien imbriqué et donc remplacement trop lourd... mais je n'abandonne pas. Je ralentie juste. Pas grave, je n'ai pas signé de contrat :p&lt;br /&gt;&lt;br /&gt;&lt;em&gt;PS: Pour ceux que ça intéresse&amp;nbsp;(il y en a?), la méthode en question est à l'instant T: Dotclear\Database\Record::__call().&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>getModifiers</title>
        <link>https://chez.jcdenis.fr/post/2022/05/20/getModifiers</link>
        <guid isPermaLink="false">urn:md5:f60c9750d5a1a16c59ee9c2bfb1bb066</guid>
        <pubDate>Fri, 20 May 2022 21:19:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Blabla</category>
                          <category>method</category>
                  <category>php</category>
                  <category>statement</category>
                <description>&lt;p&gt;Pour continuer sur &lt;a href=&quot;https://chez.jcdenis.fr/post/2022/05/18/getAttributes&quot;&gt;ma lancé d'hier&lt;/a&gt;, voici quelques constats du moment.&lt;/p&gt; &lt;p&gt;Hier je parlais des ArrayObject, sorte de fourre-tout sans nom et sans type. Un exemple de son utilisation est le passage de paramètres aux méthodes qui servent à faire des requêtes sur la base de données. On les traites à coup de tests pour savoir si une propriété des paramètres est vide, est un tableau, et un tableau d'entier, etc... Je me suis dis, tiens bonne occasion de passer par une mini class qui permette de faire ça.&lt;/p&gt;
&lt;p&gt;On crée une instance d'un class Param, on lui balance tous les paramètres qu'on veut, et ensuite la class qui gère les requêtes sur la base transforme Param à sa guise pour avoir en retour toujours le bon type de paramètres. Bon. Ca fonctionne. Mais ça utilise une class générique (Param), une classe par type de requête (LogParam, NoticeParam, UserParam, etc...) ce n'est pas plus court, ce n'est pas plus lisible (enfin si mais c'est plus long). Bref, je ne sais pas si je garde ça…&lt;/p&gt;
&lt;p&gt;Tiens, au passage, j'ai essayé de me passer de ce Param et d'utilisé uniquement les sqlStatement déjà présent dans quelques class et qui devront à terme être présent partout. Ben ce n'est pas possible car il est quasi impossible de savoir ce qu'on a déjà mis dedans (on a parfois besoin de modifier un paramètre déjà existant ou de le tester pour ajouter une autre options) et on ne peut pas nom plus passer un SelectStatement a deux requêtes consécutives (ou alors peut-être avec un clone mais ça va devenir compliqué) car si on ajoute par exemple un -&amp;gt;from() dans le première requête, il se retrouve dans la seconde alors qu'on l'y ajoute aussi (cette deuxième requête pouvant être faite sans la première)&lt;/p&gt;
&lt;p&gt;Bref, j'ai mal à la tête et je n'arrive pas encore à la bonne solution.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>getAttributes</title>
        <link>https://chez.jcdenis.fr/post/2022/05/18/getAttributes</link>
        <guid isPermaLink="false">urn:md5:0823ce02fcce57e48d827341777d7ccb</guid>
        <pubDate>Wed, 18 May 2022 19:22:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Blabla</category>
                          <category>php</category>
                  <category>type</category>
                <description>&lt;p&gt;Comme je ne blogue carrément pas assez, je viens de créer une sous catégorie Blabla Dotclear, qui me permettra d'écrire d'ultra court billet pour simplement énoncer par écrit une pensée éphémère sur ce que je bricole à un instant T.&lt;/p&gt; &lt;p&gt;Donc pour inaugurer ce lieu, je vais juste poser à l'arrache deux interrogations &lt;del&gt;du jour&lt;/del&gt; de la semaine :&lt;/p&gt;
&lt;p&gt;&lt;ul&gt;&lt;li&gt;Les ArrayObject ne me plaisent pas, dois-je tous les remplacer par de petits objets dédiés à une tache précise ? J'ai déjà testé en local sur le passage des paramètres aux requêtes tels que getPosts, ce n'est ni plus court, ni plus long, ni plus lisible, mais ça a le mérite de toujours renvoyer le bon typage de variable.&lt;/li&gt;
&lt;li&gt;Les RsExtXxx sont impossibles à tracer/typer (ce n'est pas totalement vrai mais j'ai dis que je faisait court), qu'est ce que je pourrais inventer pour y remédier tout en restant aussi simple d'utilisation ?&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Voila c'est tout pour aujourd'hui.&lt;/div&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Upgrade PHP</title>
        <link>https://chez.jcdenis.fr/post/2021/12/25/Upgrade-PHP</link>
        <guid isPermaLink="false">urn:md5:edcfcecd7e5515370a155043491dad02</guid>
        <pubDate>Sat, 25 Dec 2021 20:20:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Dotclear</category>
                          <category>php</category>
                  <category>upgrade</category>
                <description>&lt;p&gt;La prochaine version de Dotclear requiert PHP &amp;gt; 7.4, hors chez moi j'avais une 7.3.xx. C'est l'occasion de faire un petit pense bête sur la manière de faire l'upgrade.&lt;/p&gt; &lt;figure style=&quot;margin: 0 auto; display: table;&quot;&gt;&lt;a class=&quot;media-link&quot; href=&quot;https://chez.jcdenis.fr/public/photos/20211204-02.jpg&quot;&gt;&lt;img alt=&quot;20211204-02.jpg, déc. 2021&quot; class=&quot;media&quot; src=&quot;https://chez.jcdenis.fr/public/photos/.20211204-02_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;figcaption&gt;Oriane - La panicière - 12/2021&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;On part d'une installation Debian avec un serveur Apache2 et on se connecte au surveur web en SSH avec un utilisateur sudo. On commence par mettre à jour la distribution avec la commande :&lt;br /&gt;
 &lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt update &amp;amp; upgrade -y

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ensuite on regarde ce qui est installé actuellement et on récupère cette liste :&lt;br /&gt;
 &lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo dpkg -l | grep php

ii &amp;nbsp;libapache2-mod-php &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii &amp;nbsp;libapache2-mod-php7.3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;server-side, HTML-embedded scripting language (Apache 2 module)
ii &amp;nbsp;php &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;server-side, HTML-embedded scripting language (default)
ii &amp;nbsp;php-cli &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;command-line interpreter for the PHP scripting language (default)
ii &amp;nbsp;php-common &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Common files for PHP packages
ii &amp;nbsp;php-curl &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CURL module for PHP [default]
ii &amp;nbsp;php-gd &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GD module for PHP [default]
ii &amp;nbsp;php-gmp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GMP module for PHP [default]
ii &amp;nbsp;php-intl &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Internationalisation module for PHP [default]
ii &amp;nbsp;php-mbstring &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MBSTRING module for PHP [default]
ii &amp;nbsp;php-mysql &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MySQL module for PHP [default]
ii &amp;nbsp;php-xml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii &amp;nbsp;php-xmlrpc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;XMLRPC-EPI module for PHP [default]
ii &amp;nbsp;php-zip &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:7.3+69 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Zip module for PHP [default]
ii &amp;nbsp;php7.3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;server-side, HTML-embedded scripting language (metapackage)
ii &amp;nbsp;php7.3-cli &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;command-line interpreter for the PHP scripting language
ii &amp;nbsp;php7.3-common &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;documentation, examples and common module for PHP
ii &amp;nbsp;php7.3-curl &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CURL module for PHP
ii &amp;nbsp;php7.3-gd &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GD module for PHP
ii &amp;nbsp;php7.3-gmp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GMP module for PHP
ii &amp;nbsp;php7.3-intl &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Internationalisation module for PHP
ii &amp;nbsp;php7.3-json &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JSON module for PHP
ii &amp;nbsp;php7.3-mbstring &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MBSTRING module for PHP
ii &amp;nbsp;php7.3-mysql &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MySQL module for PHP
ii &amp;nbsp;php7.3-opcache &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Zend OpCache module for PHP
ii &amp;nbsp;php7.3-readline &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;readline module for PHP
ii &amp;nbsp;php7.3-xml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DOM, SimpleXML, WDDX, XML, and XSL module for PHP
ii &amp;nbsp;php7.3-xmlrpc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;XMLRPC-EPI module for PHP
ii &amp;nbsp;php7.3-zip &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7.3.31-1~deb10u1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amd64 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Zip module for PHP&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On voit qu'on a effectivement la version 7.3 de PHP. IL va falloir la mettre à jour vers la version suivante. Pour cela il faut récupérer une liste de paquetages que le système saura installer. Ici on enchaine plusieurs commandes qui installent de quoi récupérer la liste des paquetages php disponible pour le serveur, on ajoute le lien dans le gestionnaire de paquetages et on met à jour la liste :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt install apt-transport-https lsb-release ca-certificates curl -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg&amp;nbsp;
sudo sh -c 'echo &quot;deb https://packages.sury.org/php/ $(lsb_release -sc) main&quot; &amp;gt; /etc/apt/sources.list.d/php.list'&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Voila, le système de paquetages du serveur va svoir installer ce qu'on veut. On commence par PHP lui même :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt install php7.4 php7.4-common php7.4-cli&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;D'après la liste de ce qu'on avait d'installer sur le serveur au début de ce billet, on installe les paquetages correspondant :&amp;nbsp;&lt;br /&gt;
&lt;em&gt;Attention la liste ici est juste pour l'exemple, votre serveur n'a pas forcément ces paquetage et en a peut-être d'autres en plus.&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt install php7.4-curl php7.4-gd php7.4-gmp php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xmlrpc php7.4-zip&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Enfin on installe le module PHP d'apache2 :&lt;br /&gt;
&lt;em&gt;Normalement il va être automatiquement installer en dépendance des paquetages précédents.&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt install libapache2-mod-php7.4&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On nettoie les paquetages qui sont désormais inutiles :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo apt purge php7.3 php7.3-common&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On désactive l'ancien module et on active le nouveau :&lt;br /&gt;
&lt;em&gt;Normalement l'ancien devrait déjà avoir disparu avec la commande purge.&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo a2dismod php7.3
sudo a2enmod php7.4&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Enfin on redémarre Apache :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-bash&quot;&gt;sudo service apache2 restart&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Voila un beau serveur en php 7.4.&lt;/p&gt;

&lt;p&gt;Les commandes restent les mêmes pour monter jusqu'à la dernière version (actuellement 8.1) de php. A ceci près qu'il faudra peut-être reconfigurer le fichier ini de php &lt;em&gt;(/etc/php/x.x/apache2/php.ini)&lt;/em&gt;&amp;nbsp;Il a également fallu que je désactive l'extension php xmlrpc &lt;em&gt;(ajouter ; au début de la ligne du fichier /etc/php/8.1/apache2/conf.d/20-xmlrpc.ini)&lt;/em&gt; pour la version actuelle de Dotclear qui contient déjà des classes faisant la même chose.&amp;nbsp;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Jme lance, Lucette</title>
        <link>https://chez.jcdenis.fr/post/2021/12/19/Jme-lance%2C-Lucette</link>
        <guid isPermaLink="false">urn:md5:f3b22d23023d94f0dc68f50f95ba0699</guid>
        <pubDate>Sun, 19 Dec 2021 17:31:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Dotclear</category>
                          <category>dc3</category>
                  <category>dynamique</category>
                  <category>namespace</category>
                  <category>php</category>
                <description>&lt;p&gt;Comme d'habitude, il suffit d'une idée qui me passe par la tête pour me lancer à corps perdu dans une aventure bien trop périlleuse pour moi.&lt;/p&gt; &lt;p&gt;Il y a quelques temps, j'ai commencé à regarder le fonctionnement des espaces de noms dans PHP, avec 10 ans de retard et l'impasse que j'avais fait sur ce système de gestion de classe, l'affaire n'était pas gagnée. Dès le premier aspect ça ma titillé et j'ai, comme toujours, mis mon cerveau en ébullition: Les espaces de noms de PHP permettent une gestion ultra simple de l'auto-chargement des classes depuis leurs différents dossiers. Il n'en fallait pas plus pour que j'attaque à recoder mon moteur de blog préféré en suivant ce principe. (En vrai je me suis fait la main sur des plugins qui tournent chez moi avec ces fameux &lt;em&gt;namespaces&lt;/em&gt;) Et voila, je n'ai pas réfléchie, ça engendre des milliers de problèmes et d'incompatibilités avec le code actuel et je suis donc en train d'adapter et de bricoler pour que ça passe. Et comme il y a un moment ou évidement ça ne passe plus, je recommence en modifiant en conséquence. Je suis borné, j'ai déjà recommencé 3 ou 4 fois.&lt;/p&gt;

&lt;p&gt;Il serait bon que pour une fois, vu que ça à l'air de me plaire, je prenne le problème dans son ensemble et que je pose les bases d'une réécriture propre. Je sais faire ça moi ?&amp;nbsp;&lt;/p&gt;

&lt;figure style=&quot;margin: 0 auto; display: table;&quot;&gt;&lt;a class=&quot;media-link&quot; href=&quot;https://chez.jcdenis.fr/public/photos/20211218-01.jpg&quot;&gt;&lt;img alt=&quot;20211218-01.jpg, déc. 2021&quot; class=&quot;media&quot; src=&quot;https://chez.jcdenis.fr/public/photos/.20211218-01_m.jpg&quot; /&gt;&lt;/a&gt;

&lt;figcaption&gt;Ambre et Oriane - La Panicière - 12/2021&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Pour la petite histoire, je suis partie sur du 100% classe, plus de fichiers avec des bouts de code, plus de fichier avec 5 ou 6 classes dedans. Cette structure m'oblige donc à revoir certains aspects et rendent le code absolument incompatible (pour le moment) avec l'existant. Par exemple, les pages de la partie administration seront servies depuis un seul point d'entrée et non plus une page/fichier par lieu. Les plugins ne seront plus non plus géré comme aujourd'hui par fichier (_define.php, _admin.php, etc) mais pas classe. Tous les passage pirouettes du core de Dotclear à des méthodes statiques à travers des globales seront à proscrire. (J'ai même envie de passer en dynamique pas mal de classes) J'ai donc pas mal de soucis en perspective. Mais c'est ce qui fait la beauté du jeu. Et puis Dotclear est assez solide aujourd'hui pour que ce ne soit pas une nécessité avant longtemps. Ouf. Ah, et au passage, clearbricks serait engloutie par Dotclear. Voila.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>7.1</title>
        <link>https://chez.jcdenis.fr/post/2016/12/30/7.1</link>
        <guid isPermaLink="false">urn:md5:5c8063b1e7711d80244d3de751969e6b</guid>
        <pubDate>Fri, 30 Dec 2016 11:27:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Life is Good</category>
                          <category>compatible</category>
                  <category>dotclear</category>
                  <category>php</category>
                <description>&lt;p&gt;Encore des chiffres, après le passage à Dotclear 2.11 puis 2.11.1 puis 2.11.2 hier, ouf, aujourd'hui ce serveur passe à la dernière stable de PHP, la 7.1.0&lt;/p&gt; &lt;p&gt;Comme certains ont pu le remarquer ou en faire les frais, la sortie de la nouvelle version de Dotclear &lt;a href=&quot;https://open-time.net/post/2016/12/30/Foggy&quot; hreflang=&quot;fr&quot; title=&quot;Foggy&quot;&gt;ne s'est pas fait sans douleur&lt;/a&gt;, l'ami Franckpaul a dû passer la journée à transpirer et ronchonner, entre le support sur le forum ou les réseaux, et pondre les correctifs. On avance dans les versions de php et à chaque fois on se retrouve avec des bugs de rétrocompatibilité. Pour quelqu'un comme moi qui donne de temps en temps un coup de main au projet, il devrait être bon de tester diverses anciennes versions de php, et bien non. Fidèle à mon habitude de ne rien faire comme tout le monde, j'ai délaissé l'environnement standard de mon serveur de production pour lui coller la dernière version de PHP, la 7.1... Et ça marche !&lt;br /&gt;
Je vais quand même laisser mes serveurs de test sous différentes versions de PHP pour la bonne santé de l'ami Franckpaul.&lt;br /&gt;
&lt;a href=&quot;https://chez.jcdenis.fr/public/photos/20161216-05-rtu.jpg&quot; title=&quot;20161216-05-rtu.jpg&quot;&gt;&lt;img src=&quot;https://chez.jcdenis.fr/public/photos/.20161216-05-rtu_m.jpg&quot; alt=&quot;20161216-05-rtu.jpg&quot; style=&quot;display:table; margin:0 auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Tilt</title>
        <link>https://chez.jcdenis.fr/post/2016/10/29/Tilt</link>
        <guid isPermaLink="false">urn:md5:5fd5745a73637f9bb4f8fdce7962cfc3</guid>
        <pubDate>Sat, 29 Oct 2016 23:48:00 +0200</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Nature</category>
                          <category>code</category>
                  <category>composer</category>
                  <category>insecte</category>
                  <category>noirblanc</category>
                  <category>php</category>
                  <category>symphony</category>
                <description> &lt;p&gt;Ça y est, on est samedi 23h41, j'ai fait tilt. Ça y est, je me souviens pourquoi j'ai arrêté de coder en php. Ça y est je suis retombé sur des pages parlant de Composer, Symphony, and Co... Ou comment embarquer sur un paquebot de luxe pour pécher la truite... Se coltiner 300 fichiers quand on a besoin juste d'un ou deux trucs, et le tout en ligne de commande. Clap Clap.&lt;br /&gt;
&lt;a href=&quot;https://chez.jcdenis.fr/public/photos/20161002-08-rt.jpg&quot; title=&quot;20161002-08-rt.jpg&quot;&gt;&lt;img src=&quot;https://chez.jcdenis.fr/public/photos/.20161002-08-rt_m.jpg&quot; alt=&quot;20161002-08-rt.jpg&quot; style=&quot;display:table; margin:0 auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
        
              </item>
      </channel>
</rss>
