Installer SP

Sur debian

1. Installer opensp de debian

apt-get install opensp

2. Patcher le script d'initialisation d'apache2 /usr/sbin/apache2ctl.

--- /usr/sbin/apache2ctl.orig	2008-04-08 21:36:50.000000000 -0400
+++ /usr/sbin/apache2ctl	2008-04-08 21:36:14.000000000 -0400
@@ -77,6 +77,10 @@
 
 case $ARGV in
 start|stop|restart|graceful|graceful-stop)
+	export SP_CHARSET_FIXED=NO
+	export SP_ENCODING=UTF-8
+	export SP_BCTF=UTF-8
+	export LC_ALL=fr_CA.UTF-8
     $HTTPD -k $ARGV
     ERROR=$?
     ;;

3. Modifier les constantes SGML_LIBRARY et PROGRAM_ONSGMLS.

define('PROGRAM_ONSGMLS','/usr/bin/onsgmls');
define('SGML_LIBRARY', dirname(__FILE__).'/htdocs/sgml-lib');

4. Créer un répertoire temporaire

mkdir /tmp/checkphp
chmod g+w /tmp/checkphp
chgrp www-data /tmp/checkphp

Sur redhat/fedora

Installation de openSP 1.5

wget http://download.sourceforge.net/openjade/OpenSP-1.5.tar.gz
tar xzvf OpenSP-1.5.tar.gz
cd OpenSP-1.5
./configure

Patcher le fichier include/RangeMax.cxx pour inclure la librairie des constantes: #include "constant.h"

Attention!! Attention!!! Pour avoir les messages en français il faut faire:

  1. Aller dans le répertoire po/ (cd po/)
  2. Personnellement j'ai convertit le fichier fr.po en UTF-8 (iconv, msgconv) et ensuite je l'ai compressé avec msgfmt -c fr.gmo fr.po
  3. Éditer le fichier Makefile (vi Makefile)
  4. Rechercher la ligne Catalogs et ajouter fr.gmo pour avoir ceci: CATALOGS = fr.gmo
  5. Revenir en ligne de commande et configurer la variable LANG à fr_CA ( export LANG=fr_CA )
  6. Et compiler...
    make
    make check
    make install
    cd ..
  7. S'assurer qu'Apache peut lire les langues et variables nécessaires à la bonne exécution de onsgmls. Avec RedHat, le fichier /etc/sysconfig/httpd est exécuté avant de démarrer apache (httpd). Dans ce fichier (avec droit +x) j'ai:
    #!/bin/sh
    export SP_CHARSET_FIXED=NO
    export SP_ENCODING=UTF-8
    export SP_BCTF=UTF-8
    export LC_ALL=fr_CA.UTF-8
    

Catalogue DTD

Il faut configurer la constante SGML_LIBRARY dans le fichier class.Validator.php vers le bon chemin. Présentement, j'ai la ligne:

define('SGML_LIBRARY', '/usr/local/validator/htdocs/sgml-lib');

Fichiers temporaires

J'envoie les fichiers temporaires vers le répertoire: /tmp/checkphp/ (accessible par apache).

Le répertoire des fichiers temporaires est configuré aussi dans une constante, dans le fichier class.Validator.php

define('CHECKPHP_TMPPATH', '/tmp/checkphp/');

Modules

Je vous conseille de désactiver mes trois modules personnels (MODULE_ENCODE, MODULE_CHECKLIST et MODULE_SAVE) en modifiant le 1 (vrai) pour un 0 (faux) dans le fichier check.php.

Encodage

Mon linux est en UTF-8, la page est en UTF-8, mes messages d'erreurs traduits (.po de opensp) sont aussi en UTF-8.

Vous devez avoir le support de la commande iconv() dans votre configuration PHP.