oct
2008
Dans cet article nous allons voir comment installer l’extension ssh2 pour php5, cette extension permet l’utilisation de fonctionnalités SSH2 avec php (très utiles quand on veut faire du SFTP par exemple) pour plus d’informations cf. la documentation officielle sur php.net
Pour l’installation, ce n’est pas très compliqué, il suffit de suivre ces quelques étapes à la lettre et tout ira très bien ;-)
tout d’abord il faut s’assurer d’avoir les bons paquets d’installés, en voici une liste :
- php5-dev
- openssl
- libssl-dev
- gcc
- make
- etc. je suppose que si vous installez cette extension, c’est que vous avez déjà php, apache etc.
Toute la suite s’effectue en root
mais avant toute chose, n’oublions pas de faire un petit :
apt-get update apt-get upgrade
en suite il faut créer un répertoire de travail :
cd ~ mkdir libssh2 cd libssh2
ensuite télécharger libssh2 :
wget http://ovh.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz
puis l’extraire :
tar -xzvf libssh2-0.14.tar.gz
aller dans le répertoire créé et installer libssh2 :
cd libssh2-0.14 ./configure && make all install
maintenant que libssh2 est installée, passons a ssh2 :
on sort du repertoire de libssh2 et on télécharge ssh2 :
cd .. wget http://pecl.php.net/get/ssh2-0.10.tgz
extraire l’archive téléchargée :
tar -xzvf ssh2-0.10.tgz
aller dans le répertoire créé et installer ssh2 :
cd ssh2-0.10 phpize && ./configure --with-ssh2 && make
maintenant que l’installation est terminée, on active l’extension, ici on va copier le fichier ssh2.so dans le répertoire des extension de php5 (il peut être différent du mien selon la distrib et l’installation) :
cp modules/ssh2.so /usr/lib/php5/20060613+lfs
puis on ajoute l’extension en créant un fichier ssh2.ini dans le répertoire conf.d (comme pour toutes les autres extensions de php) on n’oublie pas de le faire pour apache mais aussi pour le mode CLI.
echo "extension=ssh2.so" > /etc/php5/cli/conf.d/ssh2.ini echo "extension=ssh2.so" > /etc/php5/apache2/conf.d/ssh2.ini /etc/init.d/apache2 restart
Et voilà, notre extension est installée, a vous ssh2 et sftp avec php :)
Catégories : Linux, Linux - Logiciels, PHP / MySQL | Commentaires (2)
mai
2008
Les fonctions de l’extension FileInfo essaient de savoir le type de contenu et l’encodage d’un fichier en regardant certaines séquences d’octet “magique” à des positions spécifiques à l’intérieur du fichier. Bien qu’il ne s’agit pas d’une approche infaillible, la méthode heuristique effectue un très bon travail.
le problème avec cette extension c’est qu’elle est un peu dur à installer, en réalité pas si dur que ça, il suffit de prendre le temps de le faire. Il faut juste savoir qu’un simple apt-get install php5-fileinfo ne suffira pas, tout simplement parce qu’il n’existe pas de paquet debian pour cette extension (pas encore…).
Donc pour l’installer, voici la procédure :
Il faut d’abord installer PEAR :
apt-get install php-pear
ensuite il faut installer php5-dev si ce n’est pas déjà fait, ceci installera phpize ce qui nous évitera l’erreur :
sh: phpize: command not found ERROR: `phpize' failed
installation de php5-dev :
apt-get install php5-dev
c’est presque bon mais pas encore :
maintenant il faut installer libmagic pour nous éviter une erreur lors de l’installation de fileinfo :
apt-get install libmagic-dev
maintenant tout est bon, nous allons enfin pouvoir lancer l’installation de notre extension :
pecl install fileinfo
Voilà, maintenant fileinfo est installée, nous allons pouvoir vérifier les types mime des fichiers avec des méthodes plus fiables ;-)
Normalement tout devrait fonctionner maintenant, mais il ce peut que l’extension ne soit pas activée comme il faut, dans ce cas il faudra créer un fichier fileinfo.ini dans /etc/php5/apache2/conf.d avec le contenu suivant :
extension=fileinfo.so
reloader apache avec /etc/init.d/apache2 reload et le tour est joué :)
Catégories : Linux - Logiciels, PHP / MySQL, Programmation | Un commentaire
mar
2008
Dance cet article nous allons voir comment forcer le navigateur à télécharger un fichier (n’importe lequel) au lieux de l’ouvrir. Pour cela nous allons utiliser les Headers qu’envoie le serveur au navigateur (fonction header de php).
Voici le code a utiliser :
//date actuelle
$date = gmdate('D, d M Y H:i:s');
header("Content-Type: text/xml"); //Ici par exemple c'est pour un fichier XML, a changer en fonction du type mime du fichier voulu.
header('Content-Disposition: attachment; filename=NOM_FICHIER.xml');
header('Last-Modified: '. $date . ' GMT');
header('Expires: ' . $date);
//header specifique IE :s parce que sinon il aime pas
if(preg_match('/msie|(microsoft internet explorer)/i', $_SERVER['HTTP_USER_AGENT'])){
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}else{
header('Pragma: no-cache');
}
echo $CONTENU_DE_NOTRE_FICHIER; // ou readfile('CHEMIN_FICHIER'); En fonction du type de fichier.
Le type Mime doit être celui du fichier qu’on veut pouvoir télécharger (liste des types mime disponibles). En voici quelques exemples :
image GIF : image/gif fichier XML : text/xml fichier rtf : application/rtf fichier avi : video/msvideo
Maintenant à vos fichiers dl.php ;-)
Catégories : PHP / MySQL, Programmation | Commentaires (3)
mar
2008
Dans cette article nous allons voir comment procéder pour dézippé le contenu d’une archive directement sur son FTP free. Ceci peut être très intéressant si on a plusieurs (beaucoup) fichiers à envoyer sur le ftp, parfois ce genre d’upload peut s’avérer très difficile en fonction de la connexion, du logicile client FTP, mais aussi de l’humeur du serveur FTP de chez free. On peut se retrouver avec un certain nombre de fichiers qui ne seront pas envoyé (perdus en route ?!).
L’astuce consiste à mettre tous ses fichiers dans ZIP, uploader le zip sur le FTP et l’extraire sur place avec script PHP. Parce que envoyer UN SEUL fichier quelque soit sa taille, est toujours plus simple que d’en envoyer 36 000.
Pour commencer il faut savoir que Free ne propose aucune librairie PHP pour gérer les archives, donc nous utiliserons une classe de substitution, pour l’exemple, on va utiliser pclzip.
Maintenant, il faut créer un fichier ZIP (test.zip pour l’exemple) dans lequel on mettra tous nos fichiers à uploader sur le FTP.
Ensuite, il faut créer un fichier php (extract.php pour l’exemple) dans lequel on mettra le code suivant (à adapter selon votre cas) :
//Extrait de la documentation de la class.
require_once('pclzip.lib.php');
$archive = new PclZip('test.zip'); //METTRE LE VRAI NOM DU ZIP ;)
//Extrait dans le repertoire courant.
if ($archive->extract() == 0) {
die("Error : ".$archive->errorInfo(true));
}
maintenant on se retrouve avec 3 fichiers :
- extract.php
- pclzip.lib.php
- test.zip
On peut maintenant envoyer nos 3 fichiers dans le répertoire sensé accueillir les fichiers finaux (contenus dans le zip) sur le FTP.
maintenant prendre son navigateur et aller à l’url http://adresse_du_site.free.fr/repertoire/extract.php
et le tour est joué :-)
N.B. Cette procédure et valable pour tout hébergement mutualisé (ou pas) ne proposant pas les extensions PHP Zlib ou équivalent.
Catégories : PHP / MySQL, Programmation | Commentaires (4)
mar
2008
Le but de cet article est montrer comment protéger un répertoire par un htaccess.
pour cela il faut d’abord créer un fichier .htaccess à la racine du répertoire, ce fichier doit contenir les lignes suivantes (a adapter selon la configuration/ besoins) :
AuthName "Page protégée" AuthType Basic AuthUserFile "/CHEMIN/VERS/LE/FICHIER/.htpasswd" Require valid-user
en suite il faut créer un fichier .htpasswd qui lui contiendra les couples login/mot de passe qui auront accès au répertoire protégé.
pour cela exécutez la commande suivante :
htpasswd -c /CHEMIN/VERS/LE/FICHIER/.htpasswd LOGIN
-c pour créer un nouveau fichier .htpasswd (a ne pas utiliser si vous ajouter un utilisateur à un fichier existant).
il vous sera ensuite demandé d’entrer le mot de passe 2 fois, faites le, et le tour est joué.
pour plus de renseignement sur la commande htpasswd, voici l’écran d’aide de ladite commande :
$ htpasswd
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.
notez aussi que pour que cette protection fonctionne, il est obligatoire de ne pas avoir la directive apache AllowOverride a none, sinon le fichier .htaccess ne sera pas pris en compte, donc n’oubliez pas de la commenter ou l’enlever tout simplement si vous l’avez dans votre vhost
Catégories : Linux, Programmation | Pas de commentaires
mar
2008
Dans cet article nous allons voir comment à partir d’un code source bien commenté, générer une documentation comme on aimerait avoir pour tout projet ou application digne de son nom.
Pour cela nous allons utiliser PHPDocumentor. qui va nous permetre de générer une documentation à paritr des sources de notre projet.
Il faut d’abord l’installer avec la commande suivante :
pear install phpdocumentor
(si pear n’est pas installé faites un apt-get install php-pear)
Si vous rencontrez un problème de dépassement de mémoire alouée avec PHP, allez dans /etc/php5/cli/php.ini et augmenter cette limite (il s’agit du paramètre memory_limit).
création d’un fichier de configuration pour le projet :
pour générer la documentation d’un projet nous avons besoin d’un fichier de configuration par projet, en voici un exemple :
fichier nom_du_projet.conf :
[Parse Data] title = Titre de la documentation hidden = false parseprivate = off javadocdesc = off defaultcategoryname = Documentation defaultpackagename = Projet target = /PATH/OU/SERA/ENREGISTRE/LA/DOCUMENTATION readmeinstallchangelog = README, INSTALL, FAQ, LICENSE directory = /PATH/VERS/LE/PROJET ignore = templates/,test*.php sourcecode = on output=HTML:frames:earthli
et pour tester exécutez la commande suivante (après avoir créé le répertoire cible de la documentation)
phpdoc -c nom_du_projet.conf
et voilà, la génération prend un peu de temps, en fonction de la machine et de la taille du projet.
Catégories : Linux, Linux - Logiciels, PHP / MySQL, Programmation | Pas de commentaires
fév
2008
Parmi tous les services que propose les API google, on peut trouver des choses assez intéressantes, surtout en terme de géolocalisation avec l’API google maps et surtout très pratiques, dernièrement j’ai eu l’occasion de travailler avec le web service de géolocalisation, un outil très simple à utiliser et très pratique.
le but de la manipulation est d’obtenir la latitude et la longitude d’un point à partir de son adresse, pour cela, rien de bien méchant :
$address = 'notre adresse' //exemple : 5 rue du taur 31000 Toulouse $request = 'http://maps.google.com/maps/geo?'; $request .='q='.urlencode($address); $request .='&key='.GOOGLE_API_KEY ; // Vous devez en avoir une comme pour toutes les API google. $request .='&output=csv'; // on peut choisir d'autres format, c'est très bien expliqué dans lien du web service $response = @file_get_contents($request); // notre réponse est composée de 4 parties. //exemple de réponse : 200,6,42.730070,-73.690570 //200 code réponse (200 => ok) //6 degré de précision //et les deux dernier sont les coordonnées du point que nous cherchons a géolocaliser.
et voilà avec ce bout de code très simple nous avons géolocalisé une adresse postale, chose très pratique, mais n’oublier pas la limitation qu’impose Google (50 000 requêtes par tranche de 24 heures).
Catégories : PHP / MySQL, Programmation | Commentaires (2)
fév
2008
voici une fonction simple mais efficace pour convertir un texte en UTF-8 sans se préoccuper de sa provenance (encodage d’origine).
setlocale(LC_ALL, 'fr_FR.utf8'); //selon la configuration du serveur cela peut être : fr_FR
mb_detect_order(array('UTF-8', 'ISO-8859-1', 'ISO-8859-15', 'Windows-1252')); //l'extention mb_string est installée par defaut sur php5
function toUTF8($string){
$from = mb_detect_encoding($string);
if ($from != 'UTF-8') {
$string = mb_convert_encoding($string, 'UTF-8', $from);
}
return $string;
}
Catégories : PHP / MySQL, Programmation | Un commentaire
déc
2007
L’extension d’internationalisation est de localisation de PHP vient d’être annoncée en version Bêta, elle sera incluse dans PHP 5.3 (encore en développement).
Voici les premières classes disponibles :
- Collator : Manipulation de chaînes ;
- NumberFormatter : Manipulation de nombres ;
- Locale : Informations sur la Locale ;
- Normalizer : Uniformisation de texte en fonction de la locale ;
- MessageFormatter : Construction abstraite de texte à partir des autres objets de l’extension.
Collator et FormatNumber permettent de travailler avec des chaînes et avec des nombres, de manière indépendante de la langue (ex : “français”) et de la localisation (ex : “fr-CA” ou “fr-FR”).
Locale et Normalizer permettent d’intéragir plus en détail avec la localisation et avec du texte localisé.
MessageFormatter est le maître d’orchestre, un nouveau sprintf() en quelque sorte.
L’annonce : http://php100.wordpress.com/2007/12/12/icuphplove/
La documentation : http://docs.php.net/manual/en/book.intl.php
Téléchargement : http://pecl.php.net/package/intl
Source : Developpez.com
Catégories : PHP / MySQL | Pas de commentaires
déc
2007
es statistiques de diffusion PHP dans le monde pour novembre 2007 sont arrivées chez Nexen. PHP 5 toujours vigoureux, atteint la barre des 26 %. PHP 4.3 devrait lui passer derrière PHP 5.2 dans les prochains mois
28.7 millions de serveurs ont été testés durant le mois de novembre 2007, et 11.2 millions ont été retenus pour les statistiques. On remarque que PHP 5.2.x perdent du terrain, au profit de PHP 5.2.4. Autrement, PHP 4.4.x perd souvent des utilisateurs, sauf PHP 4.4.7.
PHP est présent sur 33,29% des sites Web au mois de novembre 2007. Les chiffres sont stables depuis le mois dernier, pour PHP comme pour ASP. La moyenne mondiale est de 26,13 % pour PHP 5.
Source : Toolinux.com
Catégories : PHP / MySQL | Pas de commentaires

(6 votes, note : 4.67 sur 5)
(1 votes, note : 4 sur 5)