<?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; Mario Chivale ♦ Personal Website</title>
	<atom:link href="https://www.mario.chivale.com/category/programming/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mario.chivale.com</link>
	<description>Mario Chivale Personal Website ♦ IT • Informatyka • Computer Science • Elektronika • Electronics • Elektryka • Electricity</description>
	<lastBuildDate>Wed, 01 May 2024 09:39:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>How to disable certificate validation in Symfony Mailer</title>
		<link>https://www.mario.chivale.com/how-to-disable-certificate-validation-in-symfony-mailer/</link>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Wed, 01 May 2024 09:34:01 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[cerificate]]></category>
		<category><![CDATA[EsmtpTransportFactory]]></category>
		<category><![CDATA[EsmtpTransportFactory.php]]></category>
		<category><![CDATA[FILTER_VALIDATE_BOOLEAN]]></category>
		<category><![CDATA[Mailer]]></category>
		<category><![CDATA[peer]]></category>
		<category><![CDATA[self signed]]></category>
		<category><![CDATA[self signed certificate]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[tls]]></category>
		<category><![CDATA[transport]]></category>
		<category><![CDATA[verify]]></category>
		<category><![CDATA[verify_peer]]></category>
		<category><![CDATA[verify_peer_name]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=832</guid>

					<description><![CDATA[To disable certificate validation &#8220;verify_peer&#8221;, edit file: symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php Search line: if (&#8221; !== $dsn-&#62;getOption(&#8216;verify_peer&#8217;) &#38;&#38; !filter_var($dsn-&#62;getOption(&#8216;verify_peer&#8217;, true), \FILTER_VALIDATE_BOOLEAN)) { and replace with this line or set true to false: if (&#8221; !== $dsn-&#62;getOption(&#8216;verify_peer&#8217;) &#38;&#38; !filter_var($dsn-&#62;getOption(&#8216;verify_peer&#8217;, false), \FILTER_VALIDATE_BOOLEAN)) { also if this line below are true, change to false: $streamOptions[&#8216;ssl&#8217;][&#8216;verify_peer&#8217;] = false; $streamOptions[&#8216;ssl&#8217;][&#8216;verify_peer_name&#8217;] = false;]]></description>
										<content:encoded><![CDATA[<p>To disable certificate validation &#8220;verify_peer&#8221;, edit file:<br />
symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php</p>
<p>Search line:<br />
if (&#8221; !== $dsn-&gt;getOption(&#8216;verify_peer&#8217;) &amp;&amp; !filter_var($dsn-&gt;getOption(&#8216;verify_peer&#8217;, <strong>true</strong>), \FILTER_VALIDATE_BOOLEAN)) {</p>
<p>and replace with this line or set <strong>true</strong> to <strong>false</strong>:<br />
if (&#8221; !== $dsn-&gt;getOption(&#8216;verify_peer&#8217;) &amp;&amp; !filter_var($dsn-&gt;getOption(&#8216;verify_peer&#8217;, <strong>false</strong>), \FILTER_VALIDATE_BOOLEAN)) {</p>
<p>also if this line below are true, change to false:<br />
$streamOptions[&#8216;ssl&#8217;][&#8216;verify_peer&#8217;] = <strong>false</strong>;<br />
$streamOptions[&#8216;ssl&#8217;][&#8216;verify_peer_name&#8217;] = <strong>false</strong>;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP 8.3 Debian 12 Instalacja</title>
		<link>https://www.mario.chivale.com/php-8-3-debian-12-instalacja/</link>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Wed, 07 Feb 2024 06:14:30 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[8.3]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache 2]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PHP 8]]></category>
		<category><![CDATA[php 8.3]]></category>
		<category><![CDATA[php8]]></category>
		<category><![CDATA[php8.3]]></category>
		<category><![CDATA[server]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=791</guid>

					<description><![CDATA[Debian 12 + Apache 2 + Obsługa PHP 3 Zakładając, iż masz już poprawnie zainstalowany system Debian 12 w wersji 12, oraz serwer stron www (internetowych), a nie masz obsługi PHP w wersji 8.3, postępuj wedle poniższych kroków: Przygotowanie do instalacji: apt-get update &#38;&#38; apt-get upgrade -y apt install ca-certificates apt-transport-https software-properties-common lsb-release curl -sSL [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Debian 12 + Apache 2 + Obsługa PHP 3</p>
<p>Zakładając, iż masz już poprawnie zainstalowany system Debian 12 w wersji 12, oraz serwer stron www (internetowych), a nie masz obsługi PHP w wersji 8.3, postępuj wedle poniższych kroków:</p>
<p><strong>Przygotowanie do instalacji</strong>:</p>
<pre>apt-get update &amp;&amp; apt-get upgrade -y
apt install ca-certificates apt-transport-https software-properties-common lsb-release
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
apt-get update &amp;&amp; apt-get upgrade -y</pre>
<p><strong>Przykładowa instalacja w konfiguracji</strong>:</p>
<pre>apt install php8.3 php8.3-cgi php8.3-cli php8.3-common php8.3-curl php8.3-fpm php8.3-http php8.3-imagick php8.3-imap libapache2-mod-fcgid libapache2-mod-php8.3 php8.3-maxminddb php8.3-mbstring php8.3-memcache php8.3-memcached php8.3-mysql php8.3-oauth php8.3-opcache php8.3-pgsql php8.3-redis php8.3-soap php8.3-xml php8.3-xsl php8.3-yaml php8.3-zip -y
a2enmod proxy_fcgi setenvif
a2enconf php8.3-fpm
systemctl restart apache2</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP MySQL Connect to Database PDO</title>
		<link>https://www.mario.chivale.com/php-mysql-connect-to-database/</link>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Sun, 21 Jan 2024 06:03:44 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[CONNECT]]></category>
		<category><![CDATA[Connection]]></category>
		<category><![CDATA[DATABASE]]></category>
		<category><![CDATA[DB Connect]]></category>
		<category><![CDATA[DB Connection]]></category>
		<category><![CDATA[PDO]]></category>
		<category><![CDATA[PHP Code]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=766</guid>

					<description><![CDATA[Below is a sample PHP code, that after configuration, can be used to connect to your database. &#60;?php $DBType = "mysql"; $DBHost = "database-host"; $DBPort = "3306"; $DBEnco = "utf-8"; $DBUser = "database-user"; $DBPass = "database-password"; $DBName = "database-name"; try { $DBCon=new PDO("$DBType:host=$DBHost;port=$DBPort;encoding=$DBEnco;dbname=$DBName",$DBUser,$DBPass); $DBCon-&#62;setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // Connected } catch(PDOException $DBError) { // Not Connected echo '&#60;strong&#62;'.$DBError-&#62;getMessage().'&#60;/strong&#62;'; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Below is a sample PHP code, that after configuration, can be used to connect to your database.</p>
<pre>&lt;?php
$DBType = "mysql";
$DBHost = "database-host";
$DBPort = "3306";
$DBEnco = "utf-8";
$DBUser = "database-user";
$DBPass = "database-password";
$DBName = "database-name";
try {
$DBCon=new PDO("$DBType:host=$DBHost;port=$DBPort;encoding=$DBEnco;dbname=$DBName",$DBUser,$DBPass);
$DBCon-&gt;setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// Connected
} catch(PDOException $DBError) {
// Not Connected
echo '&lt;strong&gt;'.$DBError-&gt;getMessage().'&lt;/strong&gt;';
exit;
}
?&gt;</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Detect Browser Language in PHP</title>
		<link>https://www.mario.chivale.com/detect-browser-language-in-php/</link>
					<comments>https://www.mario.chivale.com/detect-browser-language-in-php/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Mon, 15 May 2023 04:44:50 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[$_SERVER]]></category>
		<category><![CDATA[$_SERVER['HTTP_ACCEPT_LANGUAGE']]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[Browser Language]]></category>
		<category><![CDATA[detect]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[global]]></category>
		<category><![CDATA[global variable]]></category>
		<category><![CDATA[HTTP_ACCEPT_LANGUAGE]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[locale_accept_from_http]]></category>
		<category><![CDATA[Locale::acceptFromHttp]]></category>
		<category><![CDATA[substr]]></category>
		<category><![CDATA[variable]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=540</guid>

					<description><![CDATA[You can detect browser language using PHP global variable $_SERVER, exactly $_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;] EXAMPLES: 1. &#60;?php $BLang= Locale::acceptFromHttp($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]); echo $BLang; // Return: en ?&#62; 2. &#60;?php $BLang= locale_accept_from_http($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]); echo $BLang; // Return: en ?&#62; 3. Using substr function to get the first two letters of the string. &#60;?php $BLang = substr($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;], 0, 2); echo $BLang; // Return: [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 lang="en-US" style="text-align: justify;">You can detect browser language using PHP global variable $_SERVER, exactly $_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]</h1>
<p lang="en-US"><span style="text-decoration: underline;"><strong>EXAMPLES</strong></span>:</p>
<p lang="en-US"><strong>1</strong>.<br />
&lt;?php<br />
$BLang= Locale::acceptFromHttp($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]);<br />
echo $BLang; // Return: en<br />
?&gt;</p>
<p lang="en-US"><strong>2</strong>.<br />
&lt;?php<br />
$BLang= locale_accept_from_http($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]);<br />
echo $BLang; // Return: en<br />
?&gt;</p>
<p lang="en-US"><strong>3</strong>. Using <strong>substr</strong> function to get the first two letters of the string.<br />
&lt;?php<br />
$BLang = substr($_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;], 0, 2);<br />
echo $BLang; // Return: en<br />
?&gt;</p>
<p lang="en-US"><strong>4</strong>. Example of global variable <strong>$_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]</strong><br />
&lt;?php<br />
$BLang = $_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;];<br />
echo $BLang; // Return: en,en-US;q=0.9,en-GB;q=0.8,en-GB-oxendict;q=0.7,en-CA;q=0.6,en-IE;q=0.5,en-AU;q=0.4,en-NZ;q=0.3,en-ZA;q=0.2,de;q=0.1,de-DE;q=0.1,de-AT;q=0.1,de-CH;q=0.1,de-LI;q=0.1,pl;q=0.1,pt;q=0.1,pt-PT;q=0.1,pt-BR;q=0.1<br />
?&gt;</p>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>— Artificial Intelligence Comment —</strong></div>
<div align="center">•</div>
<p style="text-align: justify;">Detecting browser language is an important process for websites that cater to multiple audiences in different countries and languages. In this guide, we’ll discuss how to detect a user’s browser language in PHP.</p>
<p style="text-align: justify;">In today’s globalized world, it has become increasingly important for websites to be able to detect users&#8217; browser languages to provide a personalized experience. This is even more relevant for websites that offer content or services in multiple languages and cater to a wide audience.</p>
<p style="text-align: justify;">Fortunately, detecting a user’s browser language in PHP is an easy process. The most common way to detect a user’s browser language is through their <strong>HTTP Accept-Language header</strong>. This header contains the list of language codes that the user’s browser supports.</p>
<p style="text-align: justify;">To detect and analyze the Accept-Language header, we can use the <strong>$_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]</strong> variable. It is a comma-separated string of language codes ordered by priority according to the user.</p>
<p style="text-align: justify;">Once you have the contents of the Accept-Language header, you can parse and analyze it. To do this, use the <strong>PHP explode()</strong> function. This function will break up the comma-separated list into an array of language codes.</p>
<p style="text-align: justify;">Using the array of language codes, you can loop through each one and test if it is one of the languages supported by your website. If any of the languages in the list are supported by your website, you can set it as the language for that user.</p>
<p style="text-align: justify;">In conclusion, detecting a user’s browser language in PHP is a relatively simple process. With the help of the <strong>$_SERVER[&#8216;HTTP_ACCEPT_LANGUAGE&#8217;]</strong> variable and the <strong>explode()</strong> function, it is possible to parse and analyze the user’s language preferences and provide them with a personalized experience. This can be an important factor in providing an intuitive user experience across a wide variety of users.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/detect-browser-language-in-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Visitor IP Address</title>
		<link>https://www.mario.chivale.com/visitor-ip-address/</link>
					<comments>https://www.mario.chivale.com/visitor-ip-address/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Sun, 14 May 2023 09:44:37 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[IP Address]]></category>
		<category><![CDATA[PHP Code]]></category>
		<category><![CDATA[PHP Sample]]></category>
		<category><![CDATA[Real IP]]></category>
		<category><![CDATA[real ip address]]></category>
		<category><![CDATA[sample]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=519</guid>

					<description><![CDATA[This bellow PHP code help you get a real IP address visitors of your website. &#60;?php function GetUserIP() { if(isset($_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;])) { $_SERVER[&#8216;REMOTE_ADDR&#8217;] = $_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;]; $_SERVER[&#8216;HTTP_CLIENT_IP&#8217;] = $_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;]; } $client = @$_SERVER[&#8216;HTTP_CLIENT_IP&#8217;]; $forward = @$_SERVER[&#8216;HTTP_X_FORWARDED_FOR&#8217;]; $remote = $_SERVER[&#8216;REMOTE_ADDR&#8217;]; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif (filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: justify;">This bellow PHP code help you get a real IP address visitors of your website.</h1>
<p>&lt;?php<br />
function GetUserIP() {<br />
if(isset($_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;])) {<br />
$_SERVER[&#8216;REMOTE_ADDR&#8217;] = $_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;];<br />
$_SERVER[&#8216;HTTP_CLIENT_IP&#8217;] = $_SERVER[&#8220;HTTP_CF_CONNECTING_IP&#8221;];<br />
}<br />
$client = @$_SERVER[&#8216;HTTP_CLIENT_IP&#8217;];<br />
$forward = @$_SERVER[&#8216;HTTP_X_FORWARDED_FOR&#8217;];<br />
$remote = $_SERVER[&#8216;REMOTE_ADDR&#8217;];<br />
if(filter_var($client, FILTER_VALIDATE_IP)) {<br />
$ip = $client;<br />
} elseif (filter_var($forward, FILTER_VALIDATE_IP)) {<br />
$ip = $forward;<br />
} else {<br />
$ip = $remote;<br />
}<br />
return $ip;<br />
}<br />
?&gt;</p>
<p>&lt;?php<br />
$UserIP = GetUserIP();<br />
echo $UserIP;<br />
?&gt;</p>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>— Artificial Intelligence Comment —</strong></div>
<div align="center">•</div>
<p style="text-align: justify;">A visitor IP address is the unique identifier that websites use to identify and track a device (e.g. a computer or mobile device) when a user visits a webpage. Each time a user visits a website, their computer or device is assigned an IP address from the Internet Service Provider (ISP) that allows the site to recognize the IP address of the device which is used to log the visits. When a device connects to the internet, it is assigned an IP address which is a unique numerical code that is used to identify it on the network.</p>
<p style="text-align: justify;">The visitor IP address is a useful tool for webmasters as it allows them to gain valuable insights about the visitors that access their site. With the IP address, webmasters can track a user’s geographical location, determine whether the visitor has been to the website before and even which browser and operating system they are using to access the page. This data can then be used to personalize the page content to better serve the visitor.</p>
<p style="text-align: justify;">By tracking visitor IP addresses, website owners can also track potentially malicious attempts to access a website. This information can be used to identify malicious actors and enhance the overall security of the website.</p>
<p style="text-align: justify;">Generally, a website visitor’s IP address is securely encrypted and is not publicly visible as it passes through multiple networks, making it difficult to trace back to the user. However, some websites may accidentally retain an IP address or unintentionally log a visitor&#8217;s IP address, which can potentially be used for malicious purposes.</p>
<p style="text-align: justify;">In conclusion, visitor IP address is a powerful and useful tool for website owners as it allows them to gain valuable insights into their visitors and proactively protect their website. While visitor IP addresses should remain encrypted so as not to cause any security threats, website owners should take extra precautions to ensure that their visitors&#8217; private data is protected.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/visitor-ip-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHPMailer Disable SMTP SSL Certificate Verification in PHP</title>
		<link>https://www.mario.chivale.com/phpmailer-disable-smtp-ssl-certificate-verification-in-php/</link>
					<comments>https://www.mario.chivale.com/phpmailer-disable-smtp-ssl-certificate-verification-in-php/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Thu, 11 May 2023 07:38:57 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[allow_self_signed]]></category>
		<category><![CDATA[certificate]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Mailer]]></category>
		<category><![CDATA[Options]]></category>
		<category><![CDATA[PHPMailer]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[SMTP SSL]]></category>
		<category><![CDATA[SMTPAutoTLS]]></category>
		<category><![CDATA[SMTPOptions]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[verify_peer]]></category>
		<category><![CDATA[verify_peer_name]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=515</guid>

					<description><![CDATA[How to disable checking of the mail serves certificate in PHPMailer code SMTP Options $mail-&#62;SMTPOptions = [ &#8216;ssl&#8217; =&#62; [ &#8216;verify_peer&#8217; =&#62; false, &#8216;verify_peer_name&#8217; =&#62; false, &#8216;allow_self_signed&#8217; =&#62; true, ] ]; If you have any questions, write your question bellow in the &#8220;Leave a Reply&#8221; form. Thanks! &#160; &#8212; Artificial Intelligence Comment &#8212; &#8226; Recently, [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: justify;">How to disable checking of the mail serves certificate in PHPMailer code SMTP Options</h1>
<p style="text-align: justify;">$mail-&gt;SMTPOptions = [<br />
&#8216;ssl&#8217; =&gt; [<br />
&#8216;verify_peer&#8217; =&gt; <span style="color: #ff0000;">false</span>,<br />
&#8216;verify_peer_name&#8217; =&gt; <span style="color: #ff0000;">false</span>,<br />
&#8216;allow_self_signed&#8217; =&gt; <span style="color: #ff0000;">true</span>,<br />
]<br />
];</p>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>&#8212; Artificial Intelligence Comment &#8212;</strong></div>
<div align="center">&#8226;</div>
<p style="text-align: justify;">Recently, the popular open source email transfer client PHPMailer has implemented additional security measures to limit the risk of unauthorized emails being transmitted through their system. One of these measures is the ability to disable SMTP SSL certificate verification in PHP, which can be done by following the steps outlined in this article.</p>
<p style="text-align: justify;">SMTP Secure Sockets Layer (SSL) is an encryption protocol used for data transfer between two machines. It is widely used for communication between networks, including email transfer. With SSL enabled, PHPMailer can verify the authenticity of a secure link established between two computers, protecting users from potential exploits.</p>
<p style="text-align: justify;">However, there may be instances when users wish to disable this feature, either for convenience or to reduce network latency. For instance, if the user is not expecting a large volume of emails or is running a development environment, disabling SMTP SSL certificate verification may not be necessary.</p>
<p style="text-align: justify;">To disable SMTP SSL certificate verification in PHPMailer, users must edit the initialization of the PHPMailer class instance. The verification is enabled by default, but can be easily disabled by setting the “SMTPAutoTLS” parameter to “false”.</p>
<p style="text-align: justify;">Once this is done, the verification requirement will no longer be enforced when sending emails. This setting should not be used in production environments, as it can increase the risk of email spoofing. It is strongly recommended that users enable SSL verification if sending emails to any public address.</p>
<p style="text-align: justify;">In conclusion, PHPMailer has implemented a number of security measures to protect users from potential exploits while transferring emails. SSL certificate verification is one of these features, and can be easily disabled in the initialization of the PHPMailer class instance. However, this should not be done in production environments as it can reduce the level of security.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/phpmailer-disable-smtp-ssl-certificate-verification-in-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel Carbon\Carbon::setLastErrors()</title>
		<link>https://www.mario.chivale.com/laravel-carbon-carbon-set-last-errors/</link>
					<comments>https://www.mario.chivale.com/laravel-carbon-carbon-set-last-errors/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Sun, 07 May 2023 13:20:39 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Carbon]]></category>
		<category><![CDATA[CarbonCarbon]]></category>
		<category><![CDATA[Composer]]></category>
		<category><![CDATA[Creator]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Laravel Carbon]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nesbot]]></category>
		<category><![CDATA[setLastErrors]]></category>
		<category><![CDATA[Traits]]></category>
		<category><![CDATA[UPDATE]]></category>
		<category><![CDATA[upgrade]]></category>
		<guid isPermaLink="false">https://www.mario.chivale.com/?p=500</guid>

					<description><![CDATA[If you have a problem with Laravel Carbon and you see error like that: Laravel CarbonCarbon::setLastErrors() or CarbonCarbon::setLastErrors(): Argument #1 ($lastErrors) must be of type array, bool given, called in /vendor/nesbot/carbon/src/Carbon/Traits/Creator.php on line 98 You must update your composer by using: composer update composer update nesbot/carbon How to install composer on Linux Debian: apt install [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>If you have a problem with Laravel Carbon and you see error like that</strong>:<br />
<strong><span style="color: #ff0000;">Laravel CarbonCarbon::setLastErrors()</span></strong><br />
or<br />
<strong><span style="color: #ff0000;">CarbonCarbon::setLastErrors(): Argument #1 ($lastErrors) must be of type array, bool given, called in /vendor/nesbot/carbon/src/Carbon/Traits/Creator.php on line 98</span></strong></p>
<p>You must update your composer by using:<br />
<strong>composer update</strong><br />
<strong>composer update nesbot/carbon</strong></p>
<p><em><strong>How to install composer on Linux Debian</strong></em>:</p>
<pre>apt install curl php-cli php-mbstring git unzip
cd /
cd /tmp
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH='curl -sS https://composer.github.io/installer.sig'
echo $HASH
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer

----- OR -----

apt install composer -y
cd /tmp
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/bin --filename=composer</pre>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>— Artificial Intelligence Comment —</strong></div>
<div align="center">•</div>
<p style="text-align: justify;">In the web application development world, Laravel Carbon is a powerful tool for manipulating date and time. Specifically, the CarbonCarbon::setLastErrors() method of Carbon can be used to set and retrieve errors that occur during the execution of a time/date operation. This method is extremely useful in detecting, handling, and debugging time and date errors.</p>
<p style="text-align: justify;">The setLastErrors() method is initialized with no errors and sets or retrieves the last errors occurred during the instantiation of a Carbon object with an array of errors. The errors themselves are categorized as “warnings” and “fatal” with the former indicating issues related to the specific syntax used for the Carbon object, while the latter indicating errors that will prevent the Carbon object from functioning correctly.</p>
<p style="text-align: justify;">Therefore, with the setLastErrors() method, it is possible to modify the way Carbon will generate dates and times, allowing developers to provide faster feedback on errors. The advantage of this method is that it allows developers to parse and correct any suspicious or erroneous statements present in their code, making debugging time/date related errors much easier.</p>
<p style="text-align: justify;">In conclusion, the CarbonCarbon::setLastErrors() method is a useful functionality provided by the Laravel Carbon library that simplifies debugging time and date related errors. This method is an invaluable tool for web application developers, allowing them to identify, handle, and debug errors faster.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/laravel-carbon-carbon-set-last-errors/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL Connect Query Select Search Insert Update Delete</title>
		<link>https://www.mario.chivale.com/mysql-connect-query-select-search-insert-update-delete/</link>
					<comments>https://www.mario.chivale.com/mysql-connect-query-select-search-insert-update-delete/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 16:46:21 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ALTER]]></category>
		<category><![CDATA[ALTER TABLE]]></category>
		<category><![CDATA[CONNECT]]></category>
		<category><![CDATA[CREATE]]></category>
		<category><![CDATA[CREATE DATABASE]]></category>
		<category><![CDATA[CREATE TABLE]]></category>
		<category><![CDATA[DATABASE]]></category>
		<category><![CDATA[DATABASE. ALTER DATABASE]]></category>
		<category><![CDATA[DELETE]]></category>
		<category><![CDATA[DROP]]></category>
		<category><![CDATA[INDEX]]></category>
		<category><![CDATA[INSERT]]></category>
		<category><![CDATA[INSERT INTO]]></category>
		<category><![CDATA[INTO]]></category>
		<category><![CDATA[QUERY]]></category>
		<category><![CDATA[SELECT]]></category>
		<category><![CDATA[SET]]></category>
		<category><![CDATA[TABLE]]></category>
		<category><![CDATA[UPDATE]]></category>
		<guid isPermaLink="false">https://mario.chivale.com/?p=445</guid>

					<description><![CDATA[MySQL Connect &#60;?php $mysqli = new mysqli(&#8220;host&#8221;, &#8220;username&#8221;, &#8220;password&#8221;, &#8220;dbname&#8221;, &#8220;port&#8221;, &#8220;socket&#8221;); if($mysqli -&#62; connect_errno) { echo &#8220;MySQL Connection Error: &#8221; . $mysqli -&#62; connect_error; exit(); } ?&#62; MySQL Query: If you have any questions, write your question bellow in the &#8220;Leave a Reply&#8221; form. Thanks! &#160; — Artificial Intelligence Comment — • MySQL is [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>MySQL Connect</strong></p>
<p>&lt;?php<br />
$mysqli = new mysqli(&#8220;host&#8221;, &#8220;username&#8221;, &#8220;password&#8221;, &#8220;dbname&#8221;, &#8220;port&#8221;, &#8220;socket&#8221;);<br />
if($mysqli -&gt; connect_errno) {<br />
echo &#8220;MySQL Connection Error: &#8221; . $mysqli -&gt; connect_error;<br />
exit();<br />
}<br />
?&gt;</p>
<p>MySQL Query:</p>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>— Artificial Intelligence Comment —</strong></div>
<div align="center">•</div>
<p style="text-align: justify;">MySQL is a database management system that has become very popular among web developers and system administrators. It provides powerful features, such as querying, searching, inserting, updating, and deleting data. In this article, we will take a look at how to connect to MySQL, use queries to select, search, insert, update and delete data.</p>
<p style="text-align: justify;">To begin, we need to connect to the MySQL server using either the command line interface or a suitable tool like phpMyAdmin. Once connected, we can create a database, tables, and insert data. With a properly configured database, we can begin running queries.</p>
<p style="text-align: justify;">The most basic query is the SELECT statement which retrieves data from the database. We will specify what data to be retrieved, the table in which it is stored and any optional conditions or orderings.</p>
<p style="text-align: justify;">For example, a query to retrieve all rows from the &#8220;users&#8221; table could look like this: SELECT * FROM users.</p>
<p style="text-align: justify;">To make more specific queries, we can use the WHERE clause to limit the result set. For example: SELECT * FROM users WHERE age &gt; 20. This query will only return records of users that are older than 20.</p>
<p style="text-align: justify;">In addition to retrieving records, MySQL also allows us to search for data in text fields. The LIKE operator can be used to search for a certain string in a particular field. For example, if we wanted to search for users with a certain name we could use this query: SELECT * FROM users WHERE name LIKE &#8216;John&#8217;</p>
<p style="text-align: justify;">Inserting data into the database is quite easy as well. All we need to do is use the INSERT statement with the required columns and values. For example: INSERT INTO users (name, email, age) VALUES (&#8216;John&#8217;, &#8216;john@example.com&#8217;, 32). This query will insert a record with the values provided into the users table.</p>
<p style="text-align: justify;">Updating records is also simple. To update one or more records, we can use the UPDATE statement. For example: UPDATE users SET age = 33 WHERE name = &#8216;John&#8217;. This will set the age of any user with the name &#8220;John&#8221; to 33.</p>
<p style="text-align: justify;">Finally, to delete records from the database, we can use the DELETE statement. For example: DELETE FROM users WHERE age &gt; 40. This query will delete any user records with an age greater than 40.</p>
<p style="text-align: justify;">MySQL has many powerful features for managing, querying, searching, inserting, updating, and deleting data. By following the instructions in this article, you will be able to use these features to your advantage.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/mysql-connect-query-select-search-insert-update-delete/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>phpMyAdmin Deprecation Notice in PHP 8</title>
		<link>https://www.mario.chivale.com/phpmyadmin-deprecation-notice-in-php-8/</link>
					<comments>https://www.mario.chivale.com/phpmyadmin-deprecation-notice-in-php-8/#respond</comments>
		
		<dc:creator><![CDATA[Tatsu]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 12:51:04 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[8]]></category>
		<category><![CDATA[Deprecation]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[general-purpose]]></category>
		<category><![CDATA[general-purpose scripting language]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[in]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Notice]]></category>
		<category><![CDATA[Personal Home Page]]></category>
		<category><![CDATA[PHP 8]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[phpMyAdmin Deprecation Notice in PHP 8]]></category>
		<category><![CDATA[purpose]]></category>
		<category><![CDATA[scripting]]></category>
		<guid isPermaLink="false">https://mario.chivale.com/?p=435</guid>

					<description><![CDATA[ERROR (example): Deprecation Notice in ./../../php/Twig/Loader/FilesystemLoader.php realpath(): Passing null to parameter #1 ($path) of type string is deprecated Backtrace FilesystemLoader.php: realpath(NULL) ./libraries/classes/Template.php: TwigLoaderFilesystemLoader-&#62;__construct(string &#8216;/usr/share/phpmyadmin//templates/&#8217;) ./libraries/classes/Theme.php: PhpMyAdminTemplate-&#62;__construct() ./libraries/classes/Theme.php: PhpMyAdminTheme-&#62;__construct() ./libraries/classes/ThemeManager.php: PhpMyAdminTheme::load( string &#8216;./themes/pmahomme&#8217;, string &#8216;/usr/share/phpmyadmin/./themes/pmahomme/&#8217;, ) ./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager-&#62;loadThemes() ./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager-&#62;__construct() ./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager::getInstance() ./libraries/common.inc.php: PhpMyAdminThemeManager::initializeTheme() ./index.php: require_once(./libraries/common.inc.php) *** Deprecation Notice in ./../../php/Twig/Node/Node.php Return type of TwigNodeNode::getIterator() should [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><span style="color: #ff0000;"><strong>ERROR (example)</strong></span>:</p>
<p style="text-align: justify;"><strong>Deprecation Notice</strong> in ./../../php/Twig/Loader/FilesystemLoader.php<br />
realpath(): Passing null to parameter #1 ($path) of type string is deprecated</p>
<p style="text-align: justify;"><strong>Backtrace</strong></p>
<p style="text-align: justify;">FilesystemLoader.php: realpath(NULL)<br />
./libraries/classes/Template.php: TwigLoaderFilesystemLoader-&gt;__construct(string &#8216;/usr/share/phpmyadmin//templates/&#8217;)<br />
./libraries/classes/Theme.php: PhpMyAdminTemplate-&gt;__construct()<br />
./libraries/classes/Theme.php: PhpMyAdminTheme-&gt;__construct()<br />
./libraries/classes/ThemeManager.php: PhpMyAdminTheme::load(<br />
string &#8216;./themes/pmahomme&#8217;,<br />
string &#8216;/usr/share/phpmyadmin/./themes/pmahomme/&#8217;,<br />
)<br />
./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager-&gt;loadThemes()<br />
./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager-&gt;__construct()<br />
./libraries/classes/ThemeManager.php: PhpMyAdminThemeManager::getInstance()<br />
./libraries/common.inc.php: PhpMyAdminThemeManager::initializeTheme()<br />
./index.php: require_once(./libraries/common.inc.php)</p>
<p style="text-align: center;"><strong>***</strong></p>
<p style="text-align: justify;"><strong>Deprecation Notice</strong> in ./../../php/Twig/Node/Node.php<br />
Return type of TwigNodeNode::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice</p>
<p style="text-align: justify;"><strong>Backtrace</strong></p>
<p style="text-align: justify;">autoload.php: require(./../../php/Twig/Node/Node.php)<br />
{closure}(string &#8216;Twig\Node\Node&#8217;)<br />
TwigFilter.php: class_exists(string &#8216;Twig\Node\Node&#8217;)<br />
autoload.php: require(./../../php/Twig/TwigFilter.php)<br />
CoreExtension.php: {closure}(string &#8216;Twig\TwigFilter&#8217;)<br />
ExtensionSet.php: TwigExtensionCoreExtension-&gt;getFilters()<br />
ExtensionSet.php: TwigExtensionSet-&gt;initExtension()<br />
ExtensionSet.php: TwigExtensionSet-&gt;initExtensions()<br />
Environment.php: TwigExtensionSet-&gt;getFilter(string &#8216;error&#8217;)<br />
./../../../../../../var/lib/phpmyadmin/tmp/twig/49/49433f77d3462b2488dfef3699484854e3c55e4b348dae30482fadd1ce008731.php: TwigEnvironment-&gt;getFilter(string &#8216;error&#8217;)<br />
Template.php: __TwigTemplate_95dd0b99dd97a989e49170a5554a1e0ce6595b0346e92b70254c854745cea47e-&gt;doDisplay(<br />
array,<br />
array,<br />
)<br />
Template.php: TwigTemplate-&gt;displayWithErrorHandling(<br />
array,<br />
array,<br />
)<br />
Template.php: TwigTemplate-&gt;display(array)<br />
TemplateWrapper.php: TwigTemplate-&gt;render(<br />
array,<br />
array,<br />
)<br />
./libraries/classes/Template.php: TwigTemplateWrapper-&gt;render(array)<br />
./libraries/classes/Plugins/Auth/AuthenticationCookie.php: PhpMyAdminTemplate-&gt;render(<br />
string &#8216;login/header&#8217;,<br />
array,<br />
)<br />
./libraries/classes/Plugins/AuthenticationPlugin.php: PhpMyAdminPluginsAuthAuthenticationCookie-&gt;showLoginForm()<br />
./libraries/common.inc.php: PhpMyAdminPluginsAuthenticationPlugin-&gt;authenticate()<br />
./index.php: require_once(./libraries/common.inc.php)</p>
<p><strong><span style="color: #ff0000;">How to FIX</span></strong>:</p>
<p><span style="color: #ff0000;"><em><strong>Update your phpMyAdmin manualy&#8230;</strong></em></span></p>
<p>Enter to the directory:<br />
<strong>cd /usr/share/</strong></p>
<p>Rename your phpMyAdmin directory to phpmyadmin.bak:<br />
<strong>mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak</strong></p>
<p>Create a new phpMyAdmin folder:<br />
<strong>mkdir /usr/share/phpmyadmin/</strong></p>
<p>Enter to the directory:<br />
<strong>cd /usr/share/phpmyadmin/</strong></p>
<p>Download and extract phpMyAdmin:<br />
<strong>wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz</strong><br />
<strong>tar xzf phpMyAdmin-*-all-languages.tar.gz</strong></p>
<p>List folders:<br />
<strong>ls</strong></p>
<p><em><strong>You should see a new folder phpMyAdmin-*-all-languages</strong></em></p>
<p>Move the contents of this folder to /usr/share/phpmyadmin:<br />
<strong>mv phpMyAdmin-*-all-languages/* /usr/share/phpmyadmin</strong></p>
<p>Make a copy of /usr/share/phpmyadmin/config.sample.inc.php:<br />
<strong>cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc</strong></p>
<p><em><strong>Edit the /usr/share/phpmyadmin/config.inc.php</strong></em></p>
<p>Search line:<br />
$cfg[&#8216;blowfish_secret&#8217;] = &#8221;; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */<br />
And change to (example):<br />
<strong>$cfg[&#8216;blowfish_secret&#8217;] = &#8216;2RQ&amp;Vb&amp;ShmZMJcSR&#8217;; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */</strong></p>
<p>Search line (example):<br />
$cfg[&#8216;TempDir&#8217;] = &#8216;/tmp&#8217;;<br />
And change to:<br />
<strong>$cfg[&#8216;TempDir&#8217;] = &#8216;/var/tmp/phpMyAdmin&#8217;;</strong><br />
if you don&#8217;t have this line (Temporary Directory Config), after line declare(strict_types=1);, add:<br />
<strong>$cfg[&#8216;TempDir&#8217;] = &#8216;/var/tmp/phpMyAdmin&#8217;;</strong></p>
<p>Create temporary directory:<br />
<strong>mkdir -p /var/tmp/phpMyAdmin</strong><br />
<strong>chown www-data:www-data /var/tmp/phpMyAdmin</strong><br />
<strong>chmod -R 700 /var/tmp/phpMyAdmin</strong></p>
<p>Cleanup:<br />
<strong>rm -rf /usr/share/phpmyadmin/phpMyAdmin-latest-all-languages.tar.gz</strong></p>
<p>Now check your new phpMyAdmin installation is working correctly, if working correctly you can delete backup folder:<br />
<strong>rm -rf /usr/share/phpmyadmin.bak</strong></p>
<div align="center"><strong>If you have any questions,<br />
write your question bellow in the &#8220;Leave a Reply&#8221; form.<br />
<em>Thanks!</em></strong></div>
<p>&nbsp;</p>
<div align="center"><a title="PayPal- Donate" href="https://www.paypal.com/donate/?hosted_button_id=5TA4H4TJHD4BJ" target="_blank" rel="noopener"><img decoding="async" title="PayPal - Donate" src="/img/paypal-donate.webp" alt="Paypal - Donate" /></a></div>
<div align="center"><strong>— Artificial Intelligence Comment —</strong></div>
<div align="center">•</div>
<p style="text-align: justify;">On November 28th, 2020, the PHP community issued a deprecation notice for the popular open source web application, phpMyAdmin. The notice came as part of the release of PHP 8, the latest version of the programming language. phpMyAdmin was originally developed as an interface used to manage MySQL databases on web servers, and has since grown into a widely used open source application that can also manage MariaDB, PostgreSQL, and other databases.</p>
<p style="text-align: justify;">The deprecation notice states that, in the interest of performance, security, and accuracy, the implementation of mysqlnd driver for phpMyAdmin will be removed in favor of mysqli (or its object-oriented variant). This new driver offers better handling of database queries and quoting of strings. The phpMyAdmin development team also noted that they will no longer support the use of the mysql extension in phpMyAdmin or any other application.</p>
<p style="text-align: justify;">In addition to these changes, the phpMyAdmin developers have also released modified versions of their existing application that are compatible with PHP 8. Users should upgrade their versions of phpMyAdmin in order to take advantage of the new features and performance improvements.</p>
<p style="text-align: justify;">The deprecation of the mysql extension in favor of mysqli has long been a worry for phpMyAdmin users. Although it may be difficult for some users to make the transition, the new benefits are hard to deny. The improved performance, security and accuracy provided by mysqli make the move to PHP 8 a wise decision for most, if not all, phpMyAdmin users.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mario.chivale.com/phpmyadmin-deprecation-notice-in-php-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
