Digital Fashion

Rien de grand ne se fit jamais sans enthousiasme.

To content | To menu | To search

Keyword - cli

Entries feed - Comments feed

Liste de fichiers avec grep

Quand on cherche à récupérer une liste de fichiers contenant un motif particulier sous UNIX, on peut, quand on est une grosse brute comme moi, utiliser un mix des commandes grep, cut et uniq:

grep -r motif /emplacement/des/fichiers/ | cut -d : -f 1 | uniq

Le truc, c'est qu'il existe une option de grep qui remplace avantageusement l'appel a cut:

grep -rl motif /emplacement/des/fichiers | uniq

Je ne sais pas si l'option -l traite les doublons, a vérifier.

Entry has unexpectedly changed special status

Aussi connue sous le nom de L'entrée a changé de statut spécial de façon inattendue si vous avez le malheur d'avoir une machine en fr_FR, cette erreur subversion est pour le moins windowsesque, puisqu'elle n'explicite en rien (a première vue du moins) le problème rencontré. Je suppose qu'il peut intervenir dans plusieurs cas, mais dans le mien, j'avais tout simplement changé le status d'un fichier symlink en vrai fichier :-) Manip simple pour réparer (disons que le fichier s'appelle index.php et qu'il était un lien vers blog.php):

$ mv index.php index.php.new
$ ln -s blog.php index.php
$ svn rm index.php
$ mv index.php.new index.php
$ svn add index.php

Et voilà, vous pouvez maintenant commettre (oh oh oh) votre working copy.

php_sapi_name, pour des includes dynamiques ?

Tout a l'heure je me suis dis que j'aurai bien voulu faire un include en fonction du SAPI dans lequel un script s'execute. Comme PHP est (presque) bien fait, il existe la fonction php_sapi_name qui retourne le nom du SAPI courant. Ce qui nous permet de faire quelque chose comme:

$sapi_include = dirname(__FILE__) . '/sapi/'.php_sapi_name().'.php';
$sapi_default = dirname(__FILE__) . '/sapi/default.php';
 
if (file_exists($sapi_include)) {
	require_once $sapi_include;
} else if (file_exists($sapi_default)) {
	require_once $sapi_default;
}

C'est pas très joli, mais ça fonctionne. Le gros avantage, c'est qu'on a des includes spécifiques au SAPI, et donc on aura par exemple, dans sapi/apache2handler.php:

header('Content-Type: text/html; charset=ISO-8859-15');
require_once 'libraries/Template.php';
session_start();

et dans sapi/cli.php:

Var_Dump::displayInit(array('display_mode' => 'text'));

Le problème, résolu par l'utilisation de sapi/default.php, était que faire un fichier par SAPI possible serait fastidieux (il faut connaitre le nom de tous les SAPI disponibles (bon ok c'est disponible ici mais cette liste n'a rien d'officiel) puis faire un fichier pour chaque.

Maintenant la question que je me (et vous) pose, c'est: y'a-t'il des effets secondaires que je n'aurai pas encore remarqué ?

Faire du CLI en PHP

Souvent les gens ne voient PHP que comme un langage de script orienté web. Même si il est vrai que c'est son but premier, ce n'est pas la seule chose que PHP peut faire. Penchons nous un peu sur l'utilisation de PHP en CLI, qui permet d'utiliser PHP comme un langage de script classique. Nous utiliserons pour se faire un système linux (ubuntu pour être précis) avec un binaire php-cli déjà installé.

Continue reading...