Ubuntu 18.04 : installation de l’extension oci (oracle) pour php7.2

Pour installer l’extension oci (oracle) pour php7.2, il faut avant avoir installer apache, php-7.2. Puis se rendre sur ce site http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html puis télécharger ces 2 paquets

instantclient-basic-linux.x64-12.2.0.1.0.zip
instantclient-sdk-linux.x64-12.2.0.1.0.zip

Puis les envoyer sur le serveur (avec ssh, ou winscp) dans le dossier /tmp, il faut ensuite unzip les 2 zip. Ensuite, il faut déplacer les fichiers dans le dossier /opt

mkdir /opt/oracle/
mv /tmp/instantclient_12_2/ /opt/oracle

Il faut créer les liens symboliques

ln -s /opt/oracle/instantclient_12_2/libclntsh.so.12.1 /opt/oracle/instantclient_12_2/libclntsh.so 
ln -s /opt/oracle/instantclient_12_2/libocci.so.12.1 /opt/oracle/instantclient_12_2/libocci.so

Il faut donner les droits sur le répertoire

chown -R root:www-data /opt/oracle

Puis ajouter les librairies dans le ldconfig

echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient 
ldconfig

Il faut ensuite les paquets suivant (requis pour pecl)

apt install php7.2-dev php-pear build-essential libaio1

Puis il faut installer oci8 via pecl

pecl install oci8

A la question concernant le chemin, il faut répondre ceci

instantclient,/opt/oracle/instantclient_12_2

Il faut ensuite modifier les fichiers php.ini pour ajouter l’extension

nano /etc/php/7.2/apache2/php.ini

y ajouter dans dynamic extension

extension = oci8.so
nano /etc/php/7.2/cli/php.ini

y ajouter dans dynamic extension

extension = oci8.so

Il faut ensuite ajouter les variables d’environnement pour cli

echo "LD_LIBRARY_PATH=\"/opt/oracle/instantclient_12_2\"" >> /etc/environment
echo "ORACLE_HOME=\"/opt/oracle/instantclient_12_2\"" >> /etc/environment

Puis celles d’apache

echo "export LD_LIBRARY_PATH=\"/opt/oracle/instantclient_12_2\"" >> /etc/apache2/envvars
echo "export ORACLE_HOME=\"/opt/oracle/instantclient_12_2\"" >> /etc/apache2/envvars

Il faut ensuite redemarrer la machine pour prendre en compte les variables d’environnement de cli

sudo reboot

 

 

Symfony / Doctrine – Mettre à jour des champs automatiquement avec les événements

Doctrine dispose d’événements qui permettent de mettre à jour des champs automatique au moment de l’insertion, de la mise à jour, suppression, chargement.

La liste des événements et leurs utilisations est disponible ici. Ci-dessous un petit exemple :

/** @PrePersist */
public function onPrePersist()
{
  $this->setPrenom('toto');
}

L’annotation permet de lancer la fonction onPrePersist() qui va modifier le prenom à l’ajout dans la base de données. Pour utiliser les événements, pensez à ajouter sur votre entité l’annotation ci-dessous et d’importer les use nécessaires.

@HasLifecycleCallbacks

Symfony knp snappy bundle pdf – retirer les headers

Si vous avez un problème avec les headers HTTP qui s’affiche dans votre pdf.

Il faut modifier la méthode utiliser pour rendre la vue.

 $view = $this->renderView(
   'pdf/pdf.html.twig',
   [
     'info' => $info,
   ]
);

Généralement, le problème vient du fait que c’est la méthode render() qui est utilisé au lieu de renderView()