<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>php &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Tue, 23 Jun 2026 13:41:53 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=63758</generator>
	<item>
		<title>Debian 13: installare composer per PHP</title>
		<link>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/</link>
					<comments>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 24 Mar 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[composer]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6987</guid>

					<description><![CDATA[Compositor è il gestore di dipendenze alla base di molti framework e librerie PHP, ma è altrettanto utile per piccoli script e strumenti interni. I progetti PHP possono diventare rapidamente caotici quando ogni macchina scarica un set di dipendenze diverso. Composer aiuta a mantenere ordinate le librerie per i progetti PHP. Su Debian è possibile ... <a title="Debian 13: installare composer per PHP" class="read-more" href="https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/" aria-label="Per saperne di più su Debian 13: installare composer per PHP">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Compositor è il gestore di dipendenze alla base di molti framework e librerie PHP, ma è altrettanto utile per piccoli script e strumenti interni.</p>



<p class="wp-block-paragraph">I progetti PHP possono diventare rapidamente caotici quando ogni macchina scarica un set di dipendenze diverso. Composer aiuta a mantenere ordinate le librerie per i progetti PHP. Su Debian è possibile installarlo dai repository predefiniti o tramite il programma di installazione ufficiale.</p>



<p class="wp-block-paragraph">Debian 13, 12 e 11 includono una versione meno recente di Composer nei repository predefiniti, mentre il programma di installazione ufficiale offre la versione più recente.</p>



<p class="wp-block-paragraph">Attualmente sulla versione Debian 13 troviamo composer 2.8.x, sulla versione Debian 12 troviamo composer 2.5.x e sulla versione Debian 11 troviamo composer 2.0.x. Nel repository ufficiale la versione disponibile al momento è la 2.9.x.</p>



<h4 class="wp-block-heading">Installare composer dal repository debian ufficiale</h4>



<p class="wp-block-paragraph">Questa è la modalità migliore se non si necessita dell&#8217;ultima versione di composer, perché l&#8217;aggiornamento dei pacchetti viene gestito automaticamente con il resto del S.O.</p>



<p class="wp-block-paragraph">Possiamo installare composer con i seguenti comandi:</p>



<pre class="wp-block-code"><code>apt update
apt install php-cli php-curl ca-certificates unzip curl git -y
apt install composer -y</code></pre>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Installare composer dal sito ufficiale</h4>



<p class="wp-block-paragraph">Se invece si ha bisogno dell&#8217;ultima versione rilasciata, allora possiamo procedere come segue:</p>



<pre class="wp-block-code"><code>curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>npm: eseguire più servizi in parallelo (VITE e PHP)</title>
		<link>https://blog.smsoft.it/2025/05/06/npm-eseguire-piu-servizi-in-parallelo-vite-e-php/</link>
					<comments>https://blog.smsoft.it/2025/05/06/npm-eseguire-piu-servizi-in-parallelo-vite-e-php/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 06 May 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vite]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6722</guid>

					<description><![CDATA[Questa la situazione, ma quello che descrivo è applicabile per tanti altri casi simili. State sviluppando un&#8217;applicazione con VUE.JS e l&#8217;applicazione ha anche un backend API scritto in PHP. Avviamo l&#8217;applicazione in modalità di debug con: e solitamente questo attiva un servizio web sulla porta 5173 che possiamo aprire nel browser. Ma per le API ... <a title="npm: eseguire più servizi in parallelo (VITE e PHP)" class="read-more" href="https://blog.smsoft.it/2025/05/06/npm-eseguire-piu-servizi-in-parallelo-vite-e-php/" aria-label="Per saperne di più su npm: eseguire più servizi in parallelo (VITE e PHP)">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Questa la situazione, ma quello che descrivo è applicabile per tanti altri casi simili.</p>



<p class="wp-block-paragraph">State sviluppando un&#8217;applicazione con VUE.JS e l&#8217;applicazione ha anche un backend API scritto in PHP. </p>



<p class="wp-block-paragraph">Avviamo l&#8217;applicazione in modalità di debug con:</p>



<pre class="wp-block-code"><code>npm run dev</code></pre>



<p class="wp-block-paragraph">e solitamente questo attiva un servizio web sulla porta 5173 che possiamo aprire nel browser. Ma per le API PHP che ho in locale? Devo avviare un server web? devo scrivere un altro comando?</p>



<p class="wp-block-paragraph">La soluzione più semplice è usare il pacchetto npm <a href="https://www.npmjs.com/package/concurrently" target="_blank" rel="noreferrer noopener">concurrently</a> da installare con:</p>



<pre class="wp-block-preformatted">npm install --save-dev concurrently</pre>



<p class="wp-block-paragraph">poi modificare il file package.json da qualcosa tipo:</p>



<pre class="wp-block-code"><code>"scripts": {
"dev": "vite",
"build": "run-p type-check \"build-only {@}\" --",</code></pre>



<p class="wp-block-paragraph">in:</p>



<pre class="wp-block-code"><code>"scripts": {
"dev": "vite",
"dev:php": "php -S127.0.0.1:8765 -t ./",
"dev:all": "concurrently --kill-others \"npm run dev\" \"npm run dev:php\"",
"build": "run-p type-check \"build-only {@}\" --",</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">ora potremo avviare entrambe i servizi con:</p>



<pre class="wp-block-code"><code>npm run dev:all</code></pre>



<p class="wp-block-paragraph">ma nessun ci vieta di inserire nel <strong>package.json</strong> la riga che vedete in <strong>dev:all</strong> direttamente in <strong>dev</strong> e quindi lasnciare il classico <strong>npm run dev</strong> per avviarli entrambe.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Nota:</strong></p>



<p class="wp-block-paragraph">Ora ci sarà una nuova esigenza da gestire, ovvero come dire all&#8217;applicazione di usare due url differenti come base per il puntamento verso il corretto <strong>endpoint</strong> in modalità sviluppo o produzione.</p>



<p class="wp-block-paragraph">La soluzione è quella di creare due file di environment, uno chiamato <strong>.env.development</strong> in cui inseriamo:</p>



<pre class="wp-block-code"><code>NODE_ENV=dev 
VITE_API_BASE_URL=http://127.0.0.1:8765/api/</code></pre>



<p class="wp-block-paragraph">l&#8217;altro chiamato <strong>.env.production</strong> in cui inseriamo:</p>



<pre class="wp-block-code"><code>NODE_ENV=production 
VITE_API_BASE_URL=/api/</code></pre>



<p class="wp-block-paragraph">ed infine inseriamo nel file <strong>main.ts</strong>, prima di fare il <strong>createApp()</strong> , questo codice:</p>



<pre class="wp-block-code"><code>export const API_BASE_URL = import.meta.env.VITE_API_BASE_URL as string
if (!API_BASE_URL) {
  throw new Error('VITE_API_BASE_URL is not defined')
}</code></pre>



<p class="wp-block-paragraph">cosa che renderà disponibile nell&#8217;app la costante API_BASE_URL da poter utilizzare come prefisso per le nostre chiamate API.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><em>Chiaramente il tutto potete personalizzarlo secondo le vostre esigenze, questo è solo da prendere come spunto.</em></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/05/06/npm-eseguire-piu-servizi-in-parallelo-vite-e-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache/PHP e l&#8217;header Content-Length sparito</title>
		<link>https://blog.smsoft.it/2025/03/25/apache-php-e-lheader-content-length-sparito/</link>
					<comments>https://blog.smsoft.it/2025/03/25/apache-php-e-lheader-content-length-sparito/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 25 Mar 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Content-Length]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6684</guid>

					<description><![CDATA[Facendo alcuni test su degli script PHP è risultato che l&#8217;header Content-Length, seppur impostato, non veniva restituito da Apache. Dopo alcune ricerche è emerso che dalla versione 2.4.59, per gli script CGI-like (come PHP) non possono più restituire l&#8217;header Content-Length per motivi di sicurezza (rif CVE-2024-24795). Per ambienti sicuri è possibile ripristinare il precedente funzionamento ... <a title="Apache/PHP e l&#8217;header Content-Length sparito" class="read-more" href="https://blog.smsoft.it/2025/03/25/apache-php-e-lheader-content-length-sparito/" aria-label="Per saperne di più su Apache/PHP e l&#8217;header Content-Length sparito">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Facendo alcuni test su degli script <strong>PHP</strong> è risultato che l&#8217;header <strong>Content-Length</strong>, seppur impostato, non veniva restituito da <strong>Apache</strong>.</p>



<p class="wp-block-paragraph">Dopo alcune ricerche è emerso che dalla versione 2.4.59, per gli script CGI-like (come PHP) non possono più restituire l&#8217;header <strong>Content-Length</strong> per motivi di sicurezza (rif <a href="https://www.cve.org/CVERecord?id=CVE-2024-24795" target="_blank" rel="noreferrer noopener">CVE-2024-24795</a>).</p>



<p class="wp-block-paragraph">Per ambienti sicuri è possibile ripristinare il precedente funzionamento tramite una nuova direttiva di apache chiamata <a href="https://httpd.apache.org/docs/current/env.html#cgilike" target="_blank" rel="noreferrer noopener">ap_trust_cgilike_cl</a>.</p>



<p class="wp-block-paragraph">Per impostarla, creiamo un file chiamato <strong>/etc/apache2/conf-available/fix-cgi.conf</strong> con all&#8217;interno:</p>



<pre class="wp-block-code"><code>SetEnv ap_trust_cgilike_cl 1</code></pre>



<p class="wp-block-paragraph">e poi abilitiamolo con:</p>



<pre class="wp-block-code"><code>a2enconf fix-cgi
systemctl reload apache2</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/03/25/apache-php-e-lheader-content-length-sparito/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Brew: installare più versioni di PHP e scegliere quella di default</title>
		<link>https://blog.smsoft.it/2024/11/26/brew-installare-piu-versioni-di-php-e-scegliere-quella-di-default/</link>
					<comments>https://blog.smsoft.it/2024/11/26/brew-installare-piu-versioni-di-php-e-scegliere-quella-di-default/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 09:30:00 +0000</pubDate>
				<category><![CDATA[MacOS]]></category>
		<category><![CDATA[brew]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6533</guid>

					<description><![CDATA[Se usate la CLI di MacOS, non potete non conoscere Brew, un packet manager che permette di installare di tutto in modo rapido. Oggi vediamo come cercare le versioni PHP che si possono installare, vediamo come installarne due e poi scegliere quella di default. Per verificare le versioni disponibili: a questo punto possiamo installare, ad ... <a title="Brew: installare più versioni di PHP e scegliere quella di default" class="read-more" href="https://blog.smsoft.it/2024/11/26/brew-installare-piu-versioni-di-php-e-scegliere-quella-di-default/" aria-label="Per saperne di più su Brew: installare più versioni di PHP e scegliere quella di default">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se usate la CLI di MacOS, non potete non conoscere <a href="https://brew.sh/" data-type="link" data-id="https://brew.sh/" target="_blank" rel="noreferrer noopener">Brew</a>, un packet manager che permette di installare di tutto in modo rapido.</p>



<p class="wp-block-paragraph">Oggi vediamo come cercare le versioni PHP che si possono installare, vediamo come installarne due e poi scegliere quella di default.</p>



<p class="wp-block-paragraph">Per verificare le versioni disponibili:</p>



<pre class="wp-block-code"><code>brew search php</code></pre>



<p class="wp-block-paragraph">a questo punto possiamo installare, ad esempio, php@8.2 e php@8.3 e lo facciamo con:</p>



<pre class="wp-block-code"><code>brew install php@8.2 php@8.3</code></pre>



<p class="wp-block-paragraph">A questo punto, per scegliere di avere attiva la versione <strong>8.2</strong> quando richiamate semplicemente <strong>php</strong> da CLI, potete digitare quanto segue:</p>



<pre class="wp-block-code"><code>brew unlink php@8.3
brew link php@8.2 </code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Come sempre, consiglio di aggiornare i pacchetti brew e rimuovere le vecchie versioni. Per farlo basta:</p>



<pre class="wp-block-code"><code><code>brew update &amp;&amp; brew upgrade &amp;&amp; brew cleanup</code></code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2024/11/26/brew-installare-piu-versioni-di-php-e-scegliere-quella-di-default/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Brew: Installare xdebug su PHP 8.2</title>
		<link>https://blog.smsoft.it/2023/07/11/brew-installare-xdebug-su-php-8-2/</link>
					<comments>https://blog.smsoft.it/2023/07/11/brew-installare-xdebug-su-php-8-2/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 08:30:00 +0000</pubDate>
				<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[brew]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xdebug]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5997</guid>

					<description><![CDATA[La versione PHP attualmente installata da brew (il packet manager per MacOS) è la 8.2.6, anche se ci sono altre versioni che si possono installare sempre tramite brew. Per aggiungere anche l&#8217;estensione xdebug bisogna usare pecl perché non è presente direttamente nel repository di brew. Per installare PHP ed xdebug possiamo fare come segue: brew ... <a title="Brew: Installare xdebug su PHP 8.2" class="read-more" href="https://blog.smsoft.it/2023/07/11/brew-installare-xdebug-su-php-8-2/" aria-label="Per saperne di più su Brew: Installare xdebug su PHP 8.2">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">La versione PHP attualmente installata da brew (il packet manager per MacOS) è la 8.2.6, anche se ci sono altre versioni che si possono installare sempre tramite brew.</p>



<p class="wp-block-paragraph">Per aggiungere anche l&#8217;estensione xdebug bisogna usare pecl perché non è presente direttamente nel repository di brew.</p>



<p class="wp-block-paragraph">Per installare PHP ed xdebug possiamo fare come segue:</p>



<pre class="wp-block-preformatted">brew install php
mkdir /opt/homebrew/lib/php/pecl
pecl install xdebug</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2023/07/11/brew-installare-xdebug-su-php-8-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Impostare il corretto locale per PHP</title>
		<link>https://blog.smsoft.it/2023/05/23/impostare-il-corretto-locale-per-php/</link>
					<comments>https://blog.smsoft.it/2023/05/23/impostare-il-corretto-locale-per-php/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 23 May 2023 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5932</guid>

					<description><![CDATA[Il &#8220;locale&#8221; serve per definire la lingua da utilizzare per le varie funzionalità di sistema. Su Debian è possibile abilitare/disabilitare/rendere di default una lingua tramite dpkg-reconfigure: dpkg-reconfigure locales Tramite l&#8217;interfaccia curses mostrata, sarà possibile abilitare/disabilitare le lingue da usare e poi definire quella di default. Solitamente per la ligua italiana si sceglie it_IT.UTF-8. Dopo aver ... <a title="Impostare il corretto locale per PHP" class="read-more" href="https://blog.smsoft.it/2023/05/23/impostare-il-corretto-locale-per-php/" aria-label="Per saperne di più su Impostare il corretto locale per PHP">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Il &#8220;locale&#8221; serve per definire la lingua da utilizzare per le varie funzionalità di sistema.</p>



<p class="wp-block-paragraph">Su <strong>Debian</strong> è possibile abilitare/disabilitare/rendere di default una lingua tramite dpkg-reconfigure:</p>



<pre class="wp-block-preformatted">dpkg-reconfigure locales</pre>



<p class="wp-block-paragraph">Tramite l&#8217;interfaccia curses mostrata, sarà possibile abilitare/disabilitare le lingue da usare e poi definire quella di default.</p>



<p class="wp-block-paragraph">Solitamente per la ligua italiana si sceglie <strong>it_IT.UTF-8</strong>.</p>



<p class="wp-block-paragraph">Dopo aver fatto questo, sarà possibile inserire all&#8217;inizio del nostro script PHP la riga:</p>



<pre class="wp-block-code"><code>setlocale(LC_TIME, 'it_IT.utf8');</code></pre>



<p class="wp-block-paragraph">e poi stampare le date in italiano, es:</p>



<pre class="wp-block-code"><code>echo strftime("%a %d %b %Y");</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2023/05/23/impostare-il-corretto-locale-per-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian 11 (bullseye) o Debian 12 (bookworm) APT: Firme GPG per PHP, MySQL, Docker e Node</title>
		<link>https://blog.smsoft.it/2023/03/28/debian-apt-firme-gpg-per-php-e-mysql/</link>
					<comments>https://blog.smsoft.it/2023/03/28/debian-apt-firme-gpg-per-php-e-mysql/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 28 Mar 2023 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[EXPKEYSIG]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[NO_PUBKEY]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5863</guid>

					<description><![CDATA[Una cosa che mi chiedono spesso e come gestire le firme per i repository di PHP, MySQL, Docker se Node ulle nuove debian. La classica procedura di import della firma non funziona più, consiglio quindi di scaricare la firma come segue. per PHP Sury: per MySQL: per Docker: per Node: Nota: per vedere il contenuto ... <a title="Debian 11 (bullseye) o Debian 12 (bookworm) APT: Firme GPG per PHP, MySQL, Docker e Node" class="read-more" href="https://blog.smsoft.it/2023/03/28/debian-apt-firme-gpg-per-php-e-mysql/" aria-label="Per saperne di più su Debian 11 (bullseye) o Debian 12 (bookworm) APT: Firme GPG per PHP, MySQL, Docker e Node">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Una cosa che mi chiedono spesso e come gestire le firme per i repository di <strong>PHP</strong>, <strong>MySQL</strong>, <strong>Docker</strong> se <strong>Node</strong> ulle nuove debian. La classica procedura di import della firma non funziona più, consiglio quindi di scaricare la firma come segue.</p>



<p class="wp-block-paragraph"><strong>per PHP Sury:</strong></p>



<pre class="wp-block-code"><code>wget -qO- https://packages.sury.org/php/apt.gpg | gpg --dearmor &gt; /etc/apt/trusted.gpg.d/sury-php-x.x.gpg</code></pre>



<p class="wp-block-paragraph"><strong>per MySQL:</strong></p>



<pre class="wp-block-code"><code>wget -O- http://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --dearmor &gt; /etc/apt/trusted.gpg.d/mysql.gpg</code></pre>



<p class="wp-block-paragraph"><strong>per Docker:</strong></p>



<pre class="wp-block-code"><code>curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg</code></pre>



<p class="wp-block-paragraph"><strong>per Node:</strong></p>



<pre class="wp-block-code"><code>curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/nodesource.gpg</code></pre>



<p class="wp-block-paragraph"><strong>Nota</strong>: per vedere il contenuto di un file di firma (es /etc/apt/trusted.gpg.d/nodesource.gpg):</p>



<pre class="wp-block-code"><code>gpg --no-default-keyring --list-keys --keyring /etc/apt/trusted.gpg.d/nodesource.gpg</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Installate le firme, si può procedere con l&#8217;<strong>aggiunta dei repository</strong> come segue:</p>



<pre class="wp-block-code"><code>echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list</code></pre>



<p class="wp-block-paragraph">e</p>



<pre class="wp-block-code"><code>wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
dpkg -i mysql-apt-config_0.8.29-1_all.deb</code></pre>



<p class="wp-block-paragraph">e</p>



<pre class="wp-block-code"><code>echo "deb https://download.docker.com/linux/debian $(lsb_release -sc) stable" | tee /etc/apt/sources.list.d/docker.list</code></pre>



<p class="wp-block-paragraph">e</p>



<pre id="block-8f573445-654c-417a-a502-a342da0aaaf9" class="wp-block-code"><code>echo "deb https://deb.nodesource.com/node_20.x $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/nodesource.list</code></pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2023/03/28/debian-apt-firme-gpg-per-php-e-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian: Ricompilare PHP con il supporto ZTS</title>
		<link>https://blog.smsoft.it/2022/11/08/debian-ricompilare-php-con-il-supporto-zts/</link>
					<comments>https://blog.smsoft.it/2022/11/08/debian-ricompilare-php-con-il-supporto-zts/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 08 Nov 2022 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[build-dep]]></category>
		<category><![CDATA[dpkg-buildpackage]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ZTS]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5664</guid>

					<description><![CDATA[Per usare PHP con supporto ZTS è necessario ricompilarlo. Questa la procedura alla Debian-way per PHP 7.4, ma è la stessa se occorre farlo per una versione differente. Consiglio innanzitutto di attivare il repository SURY per avere disponibili tutte le versioni PHP. Se già lo avete fatto potete passare alla sezione successiva, altrimenti: A seguire: ... <a title="Debian: Ricompilare PHP con il supporto ZTS" class="read-more" href="https://blog.smsoft.it/2022/11/08/debian-ricompilare-php-con-il-supporto-zts/" aria-label="Per saperne di più su Debian: Ricompilare PHP con il supporto ZTS">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Per usare <strong>PHP</strong> con supporto <strong>ZTS</strong> è necessario ricompilarlo. Questa la procedura alla <strong>Debian-way</strong> per PHP 7.4, ma è la stessa se occorre farlo per una versione differente.</p>



<p class="wp-block-paragraph">Consiglio innanzitutto di attivare il repository <strong>SURY</strong> per avere disponibili tutte le versioni PHP. Se già lo avete fatto potete passare alla sezione successiva, altrimenti:</p>



<pre class="wp-block-code"><code>apt-get update -y
apt-get install ca-certificates apt-transport-https software-properties-common -y
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
apt-get update -y</code></pre>



<p class="wp-block-paragraph">A seguire:</p>



<pre class="wp-block-code"><code>apt-get build-dep php7.4
mkdir ~/php7; cd ~/php7
apt-get source php7.4
cd php7.4-7.4.30
sed -i -e 's/php7.4/php7.4-zts/g' debian/changelog
sed -i -e 's/php7.4/php7.4-zts/g' debian/control
export DEB_BUILD_OPTIONS=parallel=4
dpkg-buildpackage -b -uc -us</code></pre>



<p class="wp-block-paragraph">A questo punto troverete, nella cartella corrente, una serie di pacchetti <strong>.deb</strong> che potranno essere installati con il classico <strong>dpkg -i</strong>.</p>



<p class="wp-block-paragraph">Ora possiamo verificare se il supporto ZTS è abilitato:</p>



<pre class="wp-block-code"><code>php -r "echo PHP_ZTS . \"\n\";"</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2022/11/08/debian-ricompilare-php-con-il-supporto-zts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian: Scegliere la versione CLI PHP di default</title>
		<link>https://blog.smsoft.it/2021/08/10/debian-scegliere-la-versione-cli-php-di-default/</link>
					<comments>https://blog.smsoft.it/2021/08/10/debian-scegliere-la-versione-cli-php-di-default/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[update-alternatives]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5061</guid>

					<description><![CDATA[Se avete installato più versioni PHP, per richiamarle da CLI dovete eseguire qualcosa tipo: phar7.4 mentre richiamando solo: php verr eseguita una delle versioni installate per cui è attivo il puntamento. Per modificare puntamento, potete eseguire: update-alternatives --config php e poi scegliere la versione PHP, dal menù mostrato, che deve essere usata. enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se avete installato più versioni <strong>PHP</strong>, per richiamarle da <strong>CLI</strong> dovete eseguire qualcosa tipo:</p>



<pre class="wp-block-preformatted">phar7.4</pre>



<p class="wp-block-paragraph">mentre richiamando solo:</p>



<pre class="wp-block-preformatted">php</pre>



<p class="wp-block-paragraph">verr eseguita una delle versioni installate per cui è attivo il puntamento.</p>



<p class="wp-block-paragraph">Per modificare puntamento, potete eseguire:</p>



<pre class="wp-block-preformatted">update-alternatives --config php</pre>



<p class="wp-block-paragraph">e poi scegliere la versione PHP, dal menù mostrato, che deve essere usata.</p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/08/10/debian-scegliere-la-versione-cli-php-di-default/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP 7, un paio di operatori che molti ancora non conoscono&#8230;</title>
		<link>https://blog.smsoft.it/2021/01/26/php-7-un-paio-di-operatori-che-molti-ancora-non-conoscono/</link>
					<comments>https://blog.smsoft.it/2021/01/26/php-7-un-paio-di-operatori-che-molti-ancora-non-conoscono/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Jan 2021 09:30:00 +0000</pubDate>
				<category><![CDATA[Html e PHP]]></category>
		<category><![CDATA[??]]></category>
		<category><![CDATA[null coalescing operator]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[spaceship Operator]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=4857</guid>

					<description><![CDATA[Ormai PHP 7 è diventato disponibile su qualsiasi piano hosting, ma ancora leggo molto codice old-style. Ora, tralasciando tutto il resto (non sono qui a fare corsi di programmazione) volevo parlarvi di un paio di operatori che risultano molto ultili: spaceship operator null coalescing operator Lo spaceship operator permette di sapere al volo se due ... <a title="PHP 7, un paio di operatori che molti ancora non conoscono&#8230;" class="read-more" href="https://blog.smsoft.it/2021/01/26/php-7-un-paio-di-operatori-che-molti-ancora-non-conoscono/" aria-label="Per saperne di più su PHP 7, un paio di operatori che molti ancora non conoscono&#8230;">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ormai PHP 7 è diventato disponibile su qualsiasi piano hosting, ma ancora leggo molto codice old-style. Ora, tralasciando tutto il resto (non sono qui a fare corsi di programmazione) volevo parlarvi di un paio di operatori che risultano molto ultili:</p>



<ol class="wp-block-list"><li>spaceship operator</li><li>null coalescing operator</li></ol>



<p class="wp-block-paragraph">Lo <strong>spaceship operator</strong> permette di sapere al volo se due valori sono uguali o quale dei due è più grande. Ad esempio:</p>



<pre class="wp-block-code"><code>// restituisce 0
$a = 3;
$b = 3;
echo $a &lt;=&gt; $b;

// restituisce 1
$a = 5;
$b = 3;
echo $a &lt;=&gt; $b;

// restituisce -1
$a = 3;
$b = 5;
echo $a &lt;=&gt; $b;
</code></pre>



<p class="wp-block-paragraph">In pratica viene restituito <strong>0</strong> se i due valori sono uguali, <strong>1</strong> se quello di <strong>sinistra</strong> è maggiore e <strong>-1</strong> se quello di <strong>destra</strong> è maggiore.</p>



<p class="wp-block-paragraph">Il <strong>null coalescing operator</strong> invece permette di prendere il valore di una variabile se diversa da NULL, altrimenti prendere il valore della seconda variabile, ad esempio:</p>



<pre class="wp-block-code"><code>// così $x diventa uguale a $z, perché $x non è dichiarata
$z= 5;
$x = $x ?? $z;

// così $x resta invariata
$x= 3;
$z= 5;
$x = $x ?? $z;</code></pre>



<p class="wp-block-paragraph">Il <strong>null coalescing operator</strong> assomiglia un po&#8217; all&#8217;<strong>Elvis operator</strong>, che si scrive <strong>?:</strong>, solo che il primo fa anche un<strong> isset()</strong> e non produce errori nel caso la variabile non sia definita. Ad esempio:</p>



<pre id="block-16a07536-f336-4203-a028-9ea6752d1377" class="wp-block-code"><code>// così viene restituito un messaggio di errore per "Undefined variable", perché $x non è definita
$z= 5;
$x = $x ?: $z;

// così $x diventa uguale a $z
$x= null;
$z= 5;
$x = $x ?: $z;

// così $x resta invariata
$x= 3;
$z= 5;
$x = $x ?: $z;</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/01/26/php-7-un-paio-di-operatori-che-molti-ancora-non-conoscono/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
