vendredi 6 mai 2016

Firefox 46, texte invisible dans la barre d'adresses

Je travaille le plus souvent sur une machine Ubuntu 12.10. Firefox est mon navigateur par défaut et jusqu'à la semaine dernière j'utilisais sans aucun problème la version 45.0.2 du navigateur avec l'option de mise à jour automatique activée.

Lorsque la version 46 de Firefox s'est installée, j'ai remarqué que le texte de la barre d'adresses était invisible, comme si on utilisait une police blanche sur un fond blanc.
Après quelques recherches dans le support de Mozilla, j'ai essayé de désactiver l'accélération matérielle de Firefox et aussi de passer à false la valeur de gfx.xrender.enabled (via about:config).
Ces essais n'ont rien changé, le problème était toujours là. Comme je n'avais pas vraiment le temps de chercher à en savoir plus, je suis revenu à ma dernière version stable : 45.0.2 et j'ai désactivé les mises à jour automatiques.

Hier soir, mon navigateur m'a signalé sans l'installer que la nouvelle version 46.0.1 était disponible.
J'ai effectué la mise à jour en pensant que le problème avait pu être corrigé mais non, toujours pas de texte dans la barre d'adresses.
En cherchant un peu, j'ai remarqué que le problème disparaissait lorsque j'abandonnais le thème par défaut de Firefox au profit de celui appelé Douce lumière. J'avais presque décidé de me mettre à utiliser ce nouveau thème lorsque je me suis rendu compte que si le texte de la barre d'adresses était bien visible, celui des fenêtres d'authentification http et celui de certains champs de formulaires étaient eux invisibles.
Je n'ai pas cherché à comprendre si ces problèmes que je venais de remarquer étaient liés au nouveau thème ou à la version de Firefox et je suis revenu une nouvelle fois à la version 45.0.2.

Note : A mon avis, la méthode la plus simple pour revenir à une ancienne version de Firefox est de sélectionner celle que vous souhaitez et de la télécharger à partir de http://ftp.mozilla.org/pub/firefox/

vendredi 11 mars 2016

Php, passthru une autre fonction pour exécuter des programmes externes

La méthode la plus connue lorsqu'il s'agit d'exécuter un programme externe en php est sans doute la fonction exec().
Passthru permet quelque chose de très similaire tout en envoyant directement au navigateur les sorties du programme externe exécuté.

Cela peut être très pratique et permet d'éviter des manipulations de fichiers temporaires sur le serveur, lorsque l'utilisateur doit télécharger du contenu généré de façon dynamique.
Par exemple, je m'en sers souvent pour le téléchargement de sauvegardes de bases MySQL.
Avec passthru, quelques lignes comme celles ci dessous suffisent.

<?php
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename=sauvegarde.sql');
passthru('mysqldump -host MonServeur -u Utilisateur -pMotDePasse MaBaseDeDonnees');
?>

dimanche 6 mars 2016

Html2pdf, n'oubliez pas d'utiliser composer pour installer les versions récentes

Dans un ancien article, j'indiquais que html2pdf est une très bonne solution, facile à mettre en oeuvre, pour générer des documents PDF en Php.

Il y a quelques jours, je travaillais sur une vieille application et j'en ai profité pour mettre à jour html2pdf.

Premier essai, vite fait mal fait, j'ai simplement téléchargé la dernière version et remplacé mon dossier html2pdf par celui que je venais de télécharger.
Résultat : un message d'erreur me prévient qu'il y a un problème de dépendance car tcpdf n'est pas installé.

Du coup, je creuse un peu dans ce que j'ai téléchargé, arborescence des dossiers, code source, etc et comme je ne voyais pas où installer et configurer tcpdf, j'ai fini par ouvrir le fichier LISEZMOI.md et je me suis rendu compte que les dépendances étaient gérées par composer.

Il suffisait donc :

  • De lancer php composer.phar install pour télécharger et installer correctement les dépendances.
  • De remplacer dans mon application
    require_once("include/html2pdf/html2pdf.class.php")
    par
    require_once("include/html2pdf/vendor/autoload.php")

Remarques :