Archives par mot-clé : Apache

Symfony, Wamp 2.2 et l’extension PHP intl

Publié dans PHP | Un commentaire

Si vous obtenez des erreurs bizarres en utilisant PHP, notamment avec le framework Symfony, et plus particulièrement dans la gestion des formulaires, et d’autant plus si vous utilisez Wamp : c’est peut-être dû à l’extension intl.
Par exemple, une erreur 500 du type :

Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\Extension\Core\ChoiceList\MonthChoiceList::__construct() must be an instance of IntlDateFormatter, null given

Signifie peut-être que vous avez activé l’extension PHP intl ! Or, depuis PHP 5.3.0, cette extension est embarquée dans PHP. Auparavant il fallait installer / activer la version PECL de cette extension. Et visiblement, depuis Wamp 2.2, si on active la version PECL de php_intl, ça fait planter quelque chose… sûrement un doublon quelque part.
Conclusion : enlevez php_intl de votre fichier php.ini (ajoutez un point virgule devant cette ligne).

Maven Ant et scp

Publié dans Apache | Un commentaire

Ant
Dans la société où j’effectue mon stage actuellement, on utilise Maven. Je ne vais pas détailler maintenant ce « truc » parce que j’en serai bien incapable mais en gros Maven est un projet d’Apache qui fournit : des normes, des méthodes de build automatisées et peut-être d’autres choses. Hum, on va dire ça comme ça !
On utilise Maven avec Ant pour builder, et on peut donc utiliser toutes les commandes d’Ant dans les fichiers de configuration de Maven, enfin en théorie. Une des méthodes que l’on utilise fréquement sous Maven est la méthode deploy. Cette méthode copie les jar générés (oui, oui, je fais du Java !) à l’endroit que l’on a configuré, généralement en utilisant copy d’Ant. Du coup, moi ce qu’on m’a demandé de faire c’est de créer une méthode deployProd qui copie les jar sur le serveur distant de production. L’idée est donc d’utiliser scp (la commande de copie en SSH en shell) et non plus copy. Les problèmes commencent à ce niveau là et sont sûrement dû au fait que je travaille sous Windows et non sous Linux…

Avant de commencer : j’utilise Maven 1 et je crois qu’on utilise une architecture assez bizarre, mais je n’ai pas suffisement d’expérience pour aller plus loin.
Continuer la lecture

Ajouter un alias à Apache

Publié dans Apache | Laisser un commentaire

De base, pour ouvrir une page à l’aide d’Apache, il faut que celle-ci se trouve dans le dossier /var/www sous Linux, ou dans le dossier www/ d’Apache sous Windows. On y accède alors en allant à l’adresse : http://localhost/nomDeLaPage.html.
Cela n’est pas forcément des plus pratique, par exemple moi j’ai une partition sur laquelle est installée Windows, une autre avec Linux, et une troisième qui contient mes documents (avec un petit soft installé sur Windows pour pouvoir gérer le système de fichiers ext3). Par conséquent, Apache est installé sur ma partition Linux, et mes fichiers se trouvent dans ma partition documents et non dans /var/www de la partition Linux. Heureusement, il existe des solutions pour mettre fin à ce petit embêtement : il suffit de créer un alias. Pour cela, il faut rajouter une ligne dans le fichier de configuration d’apache. Sous Linux : /etc/apache2/apache2.conf (ou httpd.conf si vous utilisez apache1), ou sous Windows : $VOTRE_DOSSIER_APACHE/conf/httpd.conf (en général, des interfaces graphiques vous permettent d’ajouter facilement des Alias). Ajoutez à la fin :

# Mes alias
Alias /nomDuDossierAlias /cheminVersLeVraiDossier

Reste à redémarrer Apache, en ligne de commande par exemple :

bash$ /etc/init.d/apache2 restart

Et le tour est joué, la page http://localhost/nomDuDossierAlias est désormais accessible et utilisera les fichiers de /cheminVersLeVraiDossier. On peut préciser les permissions qui s’appliquent à ce dossier (comme pour locahost, ou un virtualhost) en ajoutant après l’alias :

<Directory /cheminVersLeVraiDossier>
   Order allow,deny 
  Allow from all
</Directory>

Pour finir, dans le cas où on souhaite utiliser de l’url-rewriting, il faudra peut-être ajouter un RewriteBase au fichier .htaccess :

RewriteBase /cheminVersLeVraiDossier

Et voilà !

Un ami m’a aussi expliqué comment enlever le localhost et utiliser directement http://cequejeveux.com en ajoutant « 127.0.0.1 cequejeveux.com » dans le fichier hosts. ça devient gadget mais ça peut être utile. J’ai un article plus détaillé en cours de rédaction à ce sujet 🙂

Pour aller plus loin

Réécriture d’url pour Dotclear

Publié dans Dotclear | Laisser un commentaire

Voilà déjà quelques temps que j’ai réussi à réécrire l’url des pages de mon blog Dotclear. Auparavant une page billet avait un url ressemblant à index.php?post/2009/07/16/titre-du-billet.html, et maintenant, elles sont de la forme : /post/2009/titre-du-billet.html. C’est quand même mieux ! On pourrait optimiser encore, mais moi ça me suffit.

Il y a deux choses à faire pour modifier la réécriture des urls sur son blog.

Format d’url des nouveaux billets

Dans les paramètres du blog (Tableau de bord > Paramètres du blog), il est possible de modifier le format d’url des nouveaux billets. Par exemple : Année/Mois/Jour/Titre ou Année/Titre.
Mais il est aussi possible de modifier ça « à la main » (donc avec plus de possibilité) dans about:config (Extensions > about:config).

Format d'urls
Continuer la lecture

Activer l’url rewriting d’Apache sous EasyPhp

Publié dans Apache | Laisser un commentaire

Aujourd’hui, j’ai cherché à activer l’url rewriting d’Apache sur l’EasyPhp que j’utilise pour tester mes sites en local. C’est assez simple, tout se passe dans le httpd.conf. (Clic droit sur le logo EasyPhp Configuration > Apache) Il suffit de dé-commenter (c’est-à-dire enlever les dièses qui sont devant) les 2 lignes suivantes :

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

J’ai la version EasyPhp 2.0, et la ligne AddModule... n’existe pas, mais ça ne pose pas de problèmes. Puis, il faut vérifier que AllowOverride est bien à All. AllowOverride apparait plusieurs fois, d’abord dans , puis dans ou autre, et dans les Alias tout en bas du fichier. Si vous n’utilisez que le dossier www/, ne vous occupez pas des Alias. Mais si vous avez créé des alias, modifiez les AllowOverride pour eux aussi. Enregistrez, redémarrez Apache (ou tout EasyPhp) et, en théorie, l’url rewriting est activé ! Amusez-vous bien !
Je me rend compte que cette manipulation ne dépend pas du tout d’EasyPhp (et c’est plutologic), donc en fait, je viens d’apprendre à activer l’urlrewriting d’Apache tout court. C’est beau.

2 méthodes pour personnaliser des extensions Web

Publié dans Apache | Laisser un commentaire

J’ai lu un billet l’autre jour sur Code 18 à propos de la personnalisation des extensions Web, et je trouvais que ça allait bien avec ce dont j’ai déjà parlé à propos de l’Url Rewriting. Par exemple, si jamais j’avais envie de créer des fichiers .bn pour faire genre j’ai créé un langage s’appelant « BN » (héhé) mais sans créer ce langage (parce que hein), en utilisant le langage PHP par exemple. Eh bien il me suffit de dire à Apache (ou équivalent) d’interpréter les pages .bn comme des pages .php. Pour cela, je n’ai qu’à ajouter une ligne au .htaccess ou au fichier httpd.conf d’Apache :

AddType application/x-httpd-php .bn

Et je suppose qu’on peut faire de même avec httpd-html… A tester. Bon, vous me direz, on peut obtenir le même effet en créant normalement des pages .php et en utilisant l’Url Rewriting pour créer des pages virtuelles .bn qui redirigent vers les pages .php

RewriteRule ^([a-z,A-Z,0-9,\-]+).bn$ $1.php [L]

Et voilà le travail ! C’est cette dernière méthode que j’avais utilisé sur la Bnbox pour créer des pages .cahier, .atelier, … Je trouvais ça fun à l’époque, mais aujourd’hui je regrette un peu 😀

L’url rewriting c’est le bien

Publié dans Apache | Laisser un commentaire

L’url rewriting, cette technique qui consiste à créer des pages virtuelles avec un url tout mignon et qui redirige vers de vraies pages avec un url tout moche, est particulièrement intéressante pour 2 raisons :

  • Se faire bien voir des moteurs de recherches. L’url est très utilisé par les robots d’indexation, par conséquent, si elle contient déjà des mots clefs importants, c’est tout bon !
  • Améliorer l’expérience de ses visiteurs. En effet, on est plus enclin à cliquer sur un lien http://exemple.fr/presentation-url-rewriting.html que sur http://exemple.fr/index.php?id=1254879, tout simplement parce que l’on sait, a priori, de quoi est censé parler la page sur lequel on va se diriger.

Pour réécrire ses urls, il suffit de créer un fichier .htaccess à la racine de son serveur et d’y écrire quelques lignes pour expliquer à Apache comment rediriger certaines pages. Quelques connaissances en expressions régulières peuvent servir ! Et il faut que le mode url-rewriting de votre serveur Apache soit activé. (ce qui n’est pas le cas partout, mais il y a des techniques pour réécrire quand même ses urls, notamment sur un serveur hébergé par Free) Et ce fichier .htaccess peut ressembler à ça :

RewriteEngine on RewriteBase /site/front ################################################################################
#
# REDIRECTION DES PAGES VIRTUELLES RATTACHEES A DES RUBRIQUES : 
#
#	Exemple de redirection: scooter-rouge_15.php => index.php?id=15 
#
#	PS: 1.	Le - (tiret) sert à séparer les mots dans un nom de page
#		Le _ (underscore) sert à distinguer la page de la rubrique.
#		Exemple: scooter-rouge-08_15.php OU scooter-rouge-fiche_15.php
#
#            2.	Sur certain serveur d'hebergement, il faut forcer l'ajout de "/"
#		devant la 2éme partie des régles: /index.php?id=$2 [L]
#
# Solution : tester avec la règle située à la fin de ce fichier
# ################################################################################
# Règles pour l'affichage des pages articles
RewriteRule ^([a-z,A-Z,0-9,\-]+).html$ index.php?RID=10&kw=$1 [L]

Cela étant dit, je pense que la meilleur manière de réécrire des urls est d’utiliser le titre de la page et seulement le titre de la page. Je m’explique en prenant comme exemple une page index.php?id=42 qui a pour titre (titre de la page, ou titre d’un article) « Hello Word! » :

  • La méthode la plus courante est d’utiliser la forme suivante : hello-world_42.html. C’est déjà pas mal, et c’est même plus que bien ! C’est de loin ce qu’il y a de plus simple aussi.
  • La méthode la plus performante mais légèrement plus délicate à mettre en place est d’utiliser la forme qui suit : hello-world.html. Pour la mettre en place, il suffit d’enregistrer le titre rewrité de chacune de ses pages dans sa base de données. Ces titres rewrités remplacent alors les id des pages. Et puis voilà, le tour est joué ! Bien sûr, pour éviter que 2 pages ayant un titre identique pointent vers le même lien, il est nécessaire que la fonction de rewritage du titre se charge de vérifier que ce dernier n’existe pas encore, et si ce n’était pas le cas, de lui ajouter un id ou je ne sais quoi. Bref, l’idée est là ! Et tant qu’à faire, cette fonction de parsage se chargera de supprimer ou de remplacer les caractères accentués, les majuscules, les espaces, les mots de moins de 2 ou 3 lettres (sauf cas particuliers), … Un truc qui ne garde que les mots clefs réellement important quoi.

Bon, sur ce, je retourne rewrité des pages !

Modifier le fichier à charger en premier sur un site Web

Publié dans Apache | Un commentaire

Habituellement, sur votre site Web vous avez un fichier nommé index qui se charge par défaut lorsque l’on arrive sur votre nom de domaine. Et vous avez peut-être remarqué que si vous avez un fichier index.html et un autre index.php, c’est généralement le index.html qui se chargera le premier. Mais tout cela est configurable dans Apache (si c’est le système que vous utilisez) en modifiant ou en ajoutant la ligne suivante dans un fichier de configuration d’Apache, par exemple : /etc/apache2/conf.d/nouveau_fichier.conf.

DirectoryIndex index.html index.php index.cgi nom_d_un_fichier.extension

Je vous laissez configurer votre indien préféré 😀
Merci à TC pour m’avoir fourni cette astuce bien pratique !