PHPMyAdmin e versione di PHP: incompatibilità

Alcune volte capita che phpmyadmin fornisca dei warning in merito a funzioni deprecate.

Questo capita in quanto la versione di PHP utilizzata da apache non corrisponde a quella di phpmyadmin, di conseguenza ci sono due strade:

  1. Cambiare versione di PHP o aggiornare phpmyadmin
  2. Chiedere a phpmyadmin di ignorare i warnings

Per ignorare i warnings è sufficiente immettere il seguente testo all’interno del file /etc/phpmyadmin/config.inc.php:

$cfg['SendErrorReports'] = 'never';

Cambiare versione di PHP per apache2 in Ubuntu

Per vedere la versione di PHP utilizzata da apache2 è preferibile utilizzare il comando phpinfo. Si crei una pagina in /var/www/html, con estensione php e dal seguente contenuto:

<?php

phpinfo();

?>

Si acceda alla pagina con http://localhost/test.php.

Per modificare la versione di PHP utilizzata da apache è necessario disabilitare il modulo precedente e abilitare il nuovo. Per esempio:

//In ubunutu
Default PHP 7.1 is set on your system and you need to switch to PHP 5.6

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php5.6

Configurare MySql in Ubuntu

L’installazione di Mysql avviene con il seguente comando:

sudo apt install mysql-server

L’installazione di Mysql workbench avviene con il seguente comando snap:

sudo apt install mysql-workbench-community

Quando mysql workbench viene installato usando snap, questo esegue l’applicativo in una sandbox che non gli consente di salvare la password nell’ambeiente gnome, di conseguenza vengono segnalati errori durante l’accesso con password al database. Per eliminare la sandbox fornire il seguente comando:

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

Per consentire all’utente root di collegarsi con mysql via rete (127.0.0.1) è necessario fornire la seguente autorizzazione:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Per abilitare mysql con php utilizzare il comando è necessario abilitare il relativo modulo nel file php.ini (/etc/php/8.0/apache2/php.ini):

extension=pdo_mysql.so

sudo apt-get install php8.0-mysql

e poi si abilita il modulo php:

sudo phpenmod pdo_mysql

e si fa il restart di apache2:

sudo systemctl restart apache2

Configurare il framework Yii2 in Ubuntu

L’installazione di Yii2 si esegue utilizzando “composer“. Per installare Composer si esegua il seguente comando:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

In windows si può usare il comodo comando https://getcomposer.org/Composer-Setup.exe

Dopo aver installato composer è preferibile fare l’update:

composer self-update

Il comando per scaricare Yii2 si occupa di creare anche un progetto di base:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Se il comando precedente restituisce l’errore che non è installato l’estensione php-dom, si può installare tale estensione con il comando:

sudo apt install php8.0-dom

Allo stesso modo, potrebbe mancare anche l’estensione php-curl, installabile con il seguente comando:

sudo apt install php8.0-curl

Il comando precedente predisporrà un ambiente con il framework Yii all’interno del direttorio basic.

Istruzioni più dettagliate possono essere trovate alla pagina: https://www.yiiframework.com/doc/guide/2.0/en/start-installation

Per verificare se tutto funziona si può usare il comando seguente:

php yii serve

il quale lancia un server WEB minimale che può essere interrogato all’indirizzo http://localhost:8080/

Nella pagina dei contatti raggiungibile dalla home del sito potrebbe presentarsi un problema con una libreria mancante (gd). In tal caso la libreria può essere installata con il seguente comando:

sudo apt install php8.0-gd

e successivamente va abilitata la relativa estensione all’interno del php.ini, scommentando la riga che contiene extension=gd nel file /etc/php/8.0/apache2/php.ini o anche nel file /etc/php/8.0/cli/php.ini.

Se si desidera installare anche il framework jui per i widget in stile jquery ui, si deve lanciare il comando:

composer require --prefer-dist yiisoft/yii2-jui "*"

dall’interno del direttorio basic.

La stessa cosa va fatta per aggiungere le estensioni widgets. Invece di lanciare a mano il comando composer, è sufficiente inserire le seguenti linee all’interno del file basic/composer.json:

    "yiisoft/yii2-bootstrap5": "@dev",
    "yiisoft/yii2-jui": "*",
    "kartik-v/yii2-datecontrol": "@dev",
    "kartik-v/yii2-widgets": "@dev",
    "kartik-v/yii2-widget-datepicker": "dev-master",
    "twbs/bootstrap-icons":"*" 

e lanciare il comando (dal direttorio basic)

composer update

DatePicker utilizza bootstrap 5, che va instanziato con la seguente riga all’interno di basic/config/params.php

'bsVersion' => '5.x'

Va configurato anche il modulo datecontrol, aggiungendo le seguenti righe (dentro web.php) prima di ‘params’ => …

'modules'    => [
    'datecontrol' => [
        'class'          => 'kartik\datecontrol\Module',
        'widgetSettings' => [
            'displaySettings' => [
                kartik\datecontrol\Module::FORMAT_DATE     => 'dd-MM-yyyy',
                kartik\datecontrol\Module::FORMAT_TIME     => 'hh:mm:ss a',
                kartik\datecontrol\Module::FORMAT_DATETIME => 'dd-MM-yyyy hh:mm:ss a',
            ],
            // format settings for saving each date attribute (PHP format example)
            'saveSettings'    => [
                kartik\datecontrol\Module::FORMAT_DATE     => 'php:U', // saves as unix timestamp
                kartik\datecontrol\Module::FORMAT_TIME     => 'php:H:i:s',
                kartik\datecontrol\Module::FORMAT_DATETIME => 'php:Y-m-d H:i:s',
            ],
        ]
    ], 
],    

le quali indicano al sistema quale deve essere la formattazione per i campi Date e DateTime sia in maschera che durante il salvataggio.

Per sicurezza, ho aggiunto, sempre all’interno di web.php, nell’area components le seguenti righe:

    'formatter' => [
       'dateFormat' => 'dd-MM-Y',
       'datetimeFormat' => 'dd-MM-Y H:i:s',
       'timeFormat' => 'H:i:s',

       'locale' => 'it-IT', //your language locale
       'defaultTimeZone' => 'Europe/Rome', // time zone
    ],  

yii2::DatePicker utilizza bootstrap5 e di conseguenza font-awesome5.

Pertanto, per farlo funzionare è necessario inserire nel layout di base delle views (views/layouts/main.php), nella sezione head il seguente link:

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"/>

A questo punto si possono utilizzare i datepicker di jquery ui all’interno delle pagine, con il seguente comando:

<?= $form->field($model, 'DtCreazione')->widget(DateControl::classname(), [
    'displayFormat' => 'php:d-M-Y H:i:s',
    'type'=>DateControl::FORMAT_DATETIME
    ]); ?>