Posts tagged “GNU/Linux”.

Logs PHP avec syslog

Pendant longtemps j’ai cherché comment uniformiser les logs de mes applications PHP, et plus particulièrement des nombreux scripts en ligne de commande qui s’exécutent régulièrement (oui, je suis un grand fan de PHP en ligne de commande) et des applis web quand elles génèrent une erreur. Pour aller droit au but : j’ai trouvé (mais ça, vous vous en doutiez) et maintenant j’utilise du syslog partout. Mais patience, je vais y venir.

D’abord qu’est-ce que j’entends par “logs” ? Il y a bien sûr tous les messages d’erreurs, que ce soit des erreurs générées par PHP (genre “la base de données ne répond plus”) ou des erreurs générées manuellement (genre “c’est quoi ce bordel je devrais jamais tomber dans ce cas là”). Mais il y a également les messages d’informations sur l’état d’avancement du script en ligne de commande (que personne ne lit mais qui pourront peut-être être utile le jour où le script va faire n’importe quoi) ou encore les messages de debug (pratique pour le développement). Pour les applications web, toutes les erreurs génèrent un code HTTP 500 et une page d’erreur propre pour le client, mais j’aimerais bien pouvoir garder une trace de ce qui a foiré.

Pour un script en ligne de commande

Pour cette partie je vais essayer de détailler le plus possible, mais il vaut mieux être familier avec les systèmes Unix, car cela concerne exclusivement des scripts qui sont exécutés avec la SAPI CLI (plus d’infos dans la doc de PHP).

Affichage standard

Au départ, reflexe de programmeur PHP, j’utilisais simplement les fonctions echo (ou printf), mais ça devient vite un casse-tête de filtrer les messages selon leur niveau d’importance. Et quand le script n’est pas lancé en ligne de commande (par exemple s’il est lancé via une cron), ces messages ne sont plus visibles. Il est cependant possible de les archiver en redirigeant le flux de sortie standard vers un fichier. Mais il faut penser faire la rotation de ce fichier de log manuellement (voir logrotate) et on se retrouve vite avec une multitude de fichiers de log éparpillés sur le disque, ce qui ne facilite pas la maintenance.

Exemple, pouet.php contient :

echo "pouet\n";

On redirige le flux :

$ php pouet.php > /tmp/pouet

More… »

Problème de backspace avec screen sous Ubuntu

Si toi aussi tu t’arraches les cheveux depuis une heure parceque la touche d’effacement (backspace) ne fonctionne pas avec screen dans le terminal par défaut de XUbuntu (sobremement intitulé “Terminal”), range ce cable réseau avec lequel tu comptais te pendre, voici la solution : dans le menu “Editer > Préférénces”, aller dans la partie “Avancé” et choisir “La touche Retour arrière émet : Control-H”.

Solution alternative : changer de terminal.

Installer Ubuntu sur un Sony PCH-GRT815E

Derrière ce nom barbare se cache mon ordinateur portable Sony VAIO de quelques années, sur lequel j’ai décidé d’installer Ubuntu GNU/Linux (hé oui, il faut bien s’occuper en vacances).

More… »

Mésaventure avec Linux…

Mes aventures avec Linux se soldent généralement par un échec cuisant. Il faut dire que depuis l’instauration par Linus Torvalds d’un nouveau cycle de développement unifiant les versions impairs “de développement” (2.3, 2.5) avec les versions paires “stables” (2.2, 2.4) en une seule version “2.6.machin.truc” ni vraiment stable ni vraiment instable, le noyau est devenu un énorme jeu de domino. Ainsi, chaque mise à jour menace à tout moment de faire s’effondrer tout l’édifice. Et ce mois ci, c’est ma carte TV, une Pinnacle PCTV Stéréo, qui en a fait les frais (et non l’EFREI).

More… »

La Hauppauge WinTV PCI-FM modele 760 et moi

Ma fidèle Miro PCTV de la guerre commençant serieusement à montrer des signes de fatigues, notamment une qualité d’image horrible (neige, parasites, couleurs baveuses…) malgré un trifouillage intensif du connecteur, j’ai décidé qu’il était temps d’investir dans une nouvelle carte tuner tv, histoire d’avoir une télé agréable à regarder, et, tant qu’à faire, la radio fm. J’ai porté mon attention sur la Hauppage WinTV PCI-FM qui présente les caractéristiques que je veux pour un prix relativement abordable (89€). Un coup d’oeil sur google m’indique qu’elle sont bien supportées par bttv. Seulement c’était sans compter les ingénieurs d’Hauppauge, qui ont du décider entre deux parties de scrabble, histoire de justifier leur salaire, de changer le vieux-mais-vachement-bien-supporté chip bt pour un neuf-mais-sans-drivers conexant dans les nouvelles revisions de la carte (modele 7xx, dont le mien, le 760)… Résultat des courses, cette carte n’est pas vraiment utilisable sous Linux. Voici quelques informations/astuces que j’ai pu récolter après 2 jours complets de tests, en esperant que ça pourra servir à quelqu’un…

More… »

Comment avoir des belles fonts sous Debian ?

S’il a bien une chose que je trouve particulièrement moche sous Linux, c’est le système de font par défaut : les polices sont laides et antialisées dans tous les sens. Sans parler des fonts TrueType, qui sont complètement inexistantes ; ou encore des dizaines de méthodes différentes pour installer des fonts… Voici comment remédier à ça !

More… »

Ma Divxbox : Configurer la sortie TV

Configurer la sortie TV est l’étape la plus importante (et aussi la plus difficile) dans la réalisation de la divxbox. Les enjeux sont énormes :

  • Sans sortie TV pas de divxbox :)
  • La sortie TV doit permettre d’utiliser correctement la carte vidéo pour lire les vidéos, par exemple la vo xv de mplayer pour soulager le cpu
  • La sortie TV doit être de bonne qualité, parceque regarder un film avec un affichage tout pourri , ça gache tout !

J’ai personnellement bien lutté pour obtenir une sortie TV correcte, mais bon je n’ai jamais eu beaucoup de chance avec Linux. Donc tout ce que je peux vous souhaiter c’est de trouver la bonne carte du premier coup !

More… »

L’EFREI@home : ssh, screen et choam

Comment travailler à l’EFREI depuis chez soi ?

Qu’est-ce que choam ?

choam, c’est une machine spéciale, accessible depuis l’exterieur. Elle permet de se connecter à l’école en ssh. Les interets sont nombreux : consulter les news, recuperer facilement des projets/fichiers, écrire une page web depuis chez soi :)

Pour s’y connecter, il suffit de faire :

ssh login@choam.efrei.fr

Avec login à remplacer par votre login EFREI.

Les utilisateurs de Windows peuvent utiliser Putty ou SSH Secure Shell en version Non-commercial.

Utiliser une clef pour ssh

Pour se logguer en ssh faut toujours entrer un mot de passe. Franchement, quand on se loggue plusieurs fois de suite (exemple chezwam -> choam.efrei.fr -> machine.unix) c’est chiant de devoir rentrer 2 fois (ou plus) son pass (oui oui je suis faignant).

Une solution est d’utiliser une authentification par clef. En créant une clef et en autorisant cette clef on pourra se logguer sans soucis sur toutes les machines. Pratique :)

Pour generer une clef (laisser la passphrase vide sinon ça n’a aucun interet) :

ssh-keygen

Puis il faut l’autoriser :

ssh-copy-id -i ~/.ssh/id_dsa.pub login@machine

Avec login à remplacer par votre login EFREI.

Attention si tu ne connais rien à ssh (ou si tu veux en savoir plus) lis d’abord ce site car une authentification par clef mal configurée peut induire des failles de sécurité…

Présentation rapide de screen

screen est une application console dont le principal avantage est pouvoir se « détacher » de la console. C’est à dire qu’on peut lancer une application dedans, détacher le screen (volontairement ou en étant déconnecté brutalement par exemple) et l’application continue de tourner comme si de rien était. Une fois reconnecté il suffit de “rattacher” le screen pour recuperer la main. Indispensable quand on travaille en ssh sur une autre machine !

Mais ce n’est pas le seul avantage de screen, loin de là. En fait screen peut être considéré comme « le window manager de la console ». En effet, il permet d’afficher une barre des taches, ouvrir plusieurs consoles, passer de l’une à l’autre, splitter l’écran, … Bref c’est un must, personnellement je le lance dès que j’ouvre un shell.

screen se configure avec le fichier ~/.screenrc. Par défaut, il n’y a pas de barre des taches et il affiche un message au demarrage. Ces deux lignes permettent de remedier à ça :

hardstatus alwayslastline "%d/%m/%Y [%c] | %w"
startup_message off

Les touches de bases :

  • Ctrl + D : se déloguer = ferme la fenêtre
  • Ctrl + (A, D) : détacher le screen (screen -r pour le rattacher)
  • Ctrl + (A, C) : nouvelle fenêtre
  • Ctrl + (A, A) : fenêtre précédente
  • Ctrl + A, n : passe à la fenêtre “n”

Il existe des milliers d’autres commandes, pour changer le titre de la fenêtre, splitter l’écran, etc… Et des milliers d’options de config. Je conseille la lecture du man pour en savoir plus :)

La carte réseau qui ne trouve plus le DHCP

Le DHCP (Dynamic Host Configuration Protocol) permet aux cartes réseau de se configurer automatiquement. Au boot, l’ordinateur envoi une requête au serveur DHCP pour connaître les informations sur le réseau (adresse ip, masque du reseau, adresse de la passerelle, adresse du dns, etc…) et se configure en conséquence.

Ma petite histoire

Il y a un serveur dhcp sur le réseau qui fonctionne impec. Mon ordi se configure sans problème vu que l’installeur de Debian à tout bien réglé comme il faut, apparemment. Sauf que voila, après recompile du noyau, plus rien ne fonctionne. La carte réseau est bien configurée, mais sans IP…

#ifconfig eth0eth0    Link encap:Ethernet  HWaddr 00:50:FA:E5:43:7C          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1        RX packets:7083 errors:0 dropped:0 overruns:0 frame:0        TX packets:925 errors:0 dropped:0 overruns:0 carrier:1        collisions:0 txqueuelen:100         RX bytes:951774 (929.4 KiB)  TX bytes:2464 (2.4 KiB)        Interrupt:3 Base address:0x300 

Si je met la carte en static :

# vim /etc/network/interfaceiface eth0 inet staticaddress 192.168.0.2netmask 255.255.255.0broadcast 192.168.0.255gateway 192.168.0.1

ça roule. Donc l’ordi ne peut plus se configurer avec le DHCP…

La solution

Il faut activer dans le noyau les options CONFIG_PACKET et CONFIG_FILTER, c’est à dire “Packet socket” et “Socket Filtering” dans la section “Networking options”… Bah oui c’est tout mais j’ai quand même chercher plusieurs semaines avant de trouver quelqu’un qui avait eu le même problème…

Clavier qwerty après passage à Woody

Maintenant que la Woody est stable je ne sais pas si il y toujours ce problème, mais à l’époque de la version Potato le apt-get -u dist-upgrade transformait le clavier azerty en qwerty après reboot…

Ma petite histoire

Je crois que tout est dit, j’ai mis à jour la Potato et je me suis retrouvé après reboot devant l’invite de login sans pouvoir taper mon mot de passe vu que c’était du qwerty. Il m’a fallu regarder un schéma de clavier qwerty pour finalement retrouver les caractères spéciaux qu’il me manquait…

La solution

Une fois loggué en root :

dpkg-reconfigure console-data

Choisir “Select keyboard from arch list” puis “azerty” et enfin “French with Euro” (ou without, au choix). Et voila un clavier azerty, ouf !