Joueb.com
Envie de créer un weblog ?
Soutenez le Secours populaire
ViaBloga
Le nec plus ultra pour créer un site web.
Débarrassez vous de cette publicité : participez ! :O)

Samedi (21/05/05)
Utilisation de SSH
Première publication : mardi 1er février 2005.

J’ai écrit, jadis, un petit document sur l’utilisation de SSH, sous Windows et sous Linux. Je le perds toujours, et pourtant on me le demande assez souvent. Maintenant, je sais qu’il est ici en version HTML et là en version PDF
Ecrit par blacherez, à 03:23 dans la rubrique Linux.
Lire l'article ! (suite de l'article + 0 commentaires)
Upload de fichiers impossible avec Apache/PHP
Première publication : samedi 19 février 2005.
 

Sur une machine que j’administre (Mandrake 10.1), nous avons rencontré un problème que je ne connaissais pas : il était impossible d’uploader des fichiers dans le LMS Ilias ; les fichiers avaient l’air d’exister dans l’application, mais ils apparaissaient comme des répertoires si on essayait de les ouvrir...

Naturellement, la première chose que nous avons regardée a été les droits sur le répertoire /opt/ilias/data dans lequel les fichiers sont sauvegardés. Evidemment, ils étaient bons (sinon, je n’écrirais pas un article tout exprès...)

Un examen un peu plus approfondi a révélé que l’upload ne fonctionnait pas non plus avec d’autres applic PHP (phpMyAdmin en l’occurrence). Le système était donc en cause...

Après un phpinfo(), j’ai découvert que le répertoire temporaire par défaut était celui hérité de l’environnement de root (/root/tmp). Cette variable (en fait 2 variables : $TMP et $TMPDIR) sont affectées dans le script /etc/profile.d/tmpdir.sh qui vérifie le niveau de sécurité (SECURE LEVEL) positionné dans le fichier /etc/sysconfig/msec . Si ce niveau est supérieur ou égal à 2 (le mien était à 4), le répertoire temporaire est ${HOME}/tmp.

Bien sûr je suppose qu’au démarrage du système, lorsque /etc/init.d/httpd est lancé, le shell de root n’est pas initialisé avec le profil (mais je n’en suis pas certain) et que le problème ne se pose peut-être pas...

En tout état de cause, il existe une solution qui consiste à dire en dur à PHP où sauvegarder les fichiers uploadés. Il faut modifier la directive upload_tmp_dir en mettant le chemin du répertoire choisi (en ce qui me concerne, j’ai mis /tmp).

Ecrit par blacherez, à 03:20 dans la rubrique Linux.
Lire l'article ! (suite de l'article + 0 commentaires)
Cas particuliers pour la compilation des modules pour PHP
Première publication : jeudi 12 février 2004.

Dans mon précédent article sur la compilation des modules PHP, j’ai évoqué la procédure générale de compilation, cependant, certains modules particuliers nécessitent un traitement spécial.

Sablotron

Le module permettant l’utilisation du processeur XSLT Sablotron nécessite certaines manipulations.

-  D’abord, il faut que Sablotron soit installé. Ce programme peut être téléchargé ici. La seule méthode que j’ai réussi à faire fonctionner est la compilation à partir des sources. Par ailleurs, Sablotron est écrit en C++ et nécessite donc un compilateur C++ (et le message qui s’affiche si ce compilateur n’est pas affiché est pour le moins sibyllin) ; le rpm correspondant est gcc-c++ .

-  Ensuite, dans le répertoire ext/xslt des sources PHP, il faut modifier le fichier config.m4, en supprimant les lignes :

PHP_SETUP_ICONV(XSLT_SHARED_LIBADD, [], [
      AC_MSG_ERROR([iconv not found, in order to build sablotron you
                                             need the iconv library])

    ])

-  Lancer la configuration :

$ ./configure --enable-xslt --with-xslt-sablot=/usr/local

-  Reprendre la procédure normale décrite dans l’article précédent

Ecrit par blacherez, à 03:18 dans la rubrique Linux.
Lire l'article ! (suite de l'article + 0 commentaires)
Compilation de modules pour PHP
--> Personnaliser une installation standard de PHP (sur une Red Hat par exemple)
Première publication : mercredi 11 février 2004.

PHP propose certaines fonctionnalités sous la forme de modules. Dans les versions précompilées de PHP (par exemple les rpms fournis avec des systèmes Red Hat ou Mandrake), ces modules n’ont pas forcément été inclus dans la distribution. Voici la méthode pour les compiler afin de pouvoir les ajouter.

- D’abord, vérifier que le rpm php-devel est installé :

$ rpm -qa |grep php-devel

Un ligne de ce genre :

php-devel-4.2.2-17

doit s’afficher. Si ce n’est pas le cas, c’est que php-devel n’est pas installé ; l’installer en suivant la procédure standard : télécharger le fichier php-devel-version.rpm sur le web (par exemple en utilisant http://rpmfind.net/) ou le prendre sur le cdrom d’installation, puis, en root :

# rpm -i php-devel-version.rpm

- Télécharger la version de php qui a été installée par le distributeur (les anciennes distributions de php sont à l’adresse http://www.php.net/releases.php). Pour connaître la version exacte de PHP, créer un fichier dans l’arborescence du web contenant seulement le code suivant :

<?php
phpinfo();
?>

Puis charger ce fichier depuis un navigateur, en utilisant l’adresse IP du serveur (ou localhost si la connexion est faite depuis le serveur lui-même).

- Décompacter le tarball dans un répertoire quelconque :

$ mv php-version.tar.gz /tmp

$ cd /tmp

$ tar xzvf php-version.tar.gz

- Se placer dans le répertoire de l’extension désirée (ici, dbase, par exemple) :

$ cd php-version/ext/dbase

- Lancer le programme phpize

- Préparer la compilation :

$ ./configure

Dans certains cas, il peut être nécessaire d’ajouter des options à cette commande. Pour connaître les options possibles, utiliser la commande [1] :

$ ./configure --help

- Lancer la compilation :

$ make

- Installer la bibliothèque ainsi créée dans le répertoire des extensions de PHP (dans notre exemple, /usr/lib/php4/) (attention, vous devez être logé en root) :

# cp modules/*.so /usr/lib/php4/

Si vous ne connaissez pas le chemin de ce répertoire, la commande suivante devrait vous permettre de le trouver :

$ grep extension_dir /etc/php.ini

- Modifier le fichier de configuration de PHP : il s’agit en général de /etc/php.ini, mais à partir de Red Hat 9, il vaut mieux créer un fichier dans /etc/php.d/ ; ce fichier porte le nom du module à charger, avec une extension .ini (dbase.ini par exemple). Le texte suivant doit être ajouté au fichier php.ini ou au fichier créé dans php.d (toujours avec l’exemple de dbase) :

extension=dbase.so

- Relancer apache (en root) :

# /etc/init.d/httpd stop

# /etc/init.d/httpd start

- Recharger le fichier d’info créé au début, afin de vérifier que les nouveaux modules ont bien été pris en compte. Si ce n’est pas le cas, le fichier de log /var/log/httpd/error_log devrait donner des informations utiles pour corriger le problème.

[1] Voir aussi les cas particuliers
Ecrit par blacherez, à 03:15 dans la rubrique Linux.
Lire l'article ! (suite de l'article + 0 commentaires)