# Da FAQ

- Général
  - Quelles sont les différences entre les topics et sections?
- Hebergement
  - Puis-je installer daCode sur mon.hebergeur.amoi ?
  - Mon hébergeur est en PHP4 et n'accepte que les extensions .php, comment puis-je faire tourner daCode ?
  - Je n'ai pas accès à la commande mysql. Comment puis-je créer ma base de données?
  - Puis-je utiliser daCode sur Free?
  - J'ai un problème avec la fonction mail. Il semblerait qu'elle ne fonctionne pas.
  - J'obtiens souvent une erreur "Maximum execution time exceeded". Qu'est-ce que je peux faire?
  - daCode m'affiche: Fatal error: Forbidden port in your script on line 97.
- Configuration
  - Y un moyen pour configurer l'emplacement des fichiers de dacode ?
- Problemes divers

  - J'ai une erreur "Cannot redefine class ..."

    J'utilise phplib. Puis je quand même utiliser daCode?

  - Je n'obtiens que des pages blanches.
  - Je n'arrive pas à me connecter à MySQL en tant que root. Je suis pourtant sûr du mot de passe du root.
- Personalisation
  - Comment changer l'apparence du site? Comment supprimer certains élements de la page?
- Utilisation de daCode
  - J'ai changé le mot de âsse dans la base de données, et je ne peux plus m'identifier en tant qu'admin.

## Général

### Quelles sont les différences entre les topics et sections?

#### Reponse

En faite les topics c'est les icones que tu vois à coté des news. Ca permet de dire de quoi retourne la news. Ca peut etre Internet, PHP, Debian, KDE, Hardware, Pirate, etc. Ensuite il y a la section. Par défaut les news doivent aller dans Articles mais tu peux créer des sections lorsque tu vois que des news sont souvent postées et intéressantes mais qui n'ont pas de rapport avec le sujet principal du site, ou bien si le news de news concernant un sujet viennent souvent. Par exemple sur linuxfr j'ai mis une section Cinéma. Aprés le modérateur lors de la modération choisit s'il désire voir la news qu'il vient d'approuver sur la page principale, qui recense toutes les news qui ont le flag 'view' à 1. Ainsi sur linuxfr par exemple les news cinéma n'y sont jamais mises.

Les topics correspondent aux icones qu'on voit sur le coté des news. Le sections correpondent à ce qu'on voit en haut à gauche. Quand tu veux donner de l'importance à un sujet genre Cinéma, Debian, etc, tu peux créer une section. Ou quand tu veux parler d'un sujet sans polluer le site principal qui est sans doute au départ nonprévu pour celui ci. Genre section cinéma dans linuxfr. Le flag view permet ensuite de dire si tu veux la news sur la page principale ou non. Par exemple pour la section RTFM sur linuxfr (celle qui sert aux gens pour poser leurs questions) on ne met pas systematiquement les news sur la page principale. C'est bon ? :)

## Hebergement

### Puis-je installer daCode sur mon.hebergeur.amoi ?

#### Reponse

Très certainement. daCode fonctionne avec PHP en safe mode, ce qui est le cas avec la plupart des hébergeurs. Par contre, certains hébergeurs ont supprimé l'accès à la fontion mail() de PHP. Si c'est votre cas, voyez ci-dessous.

### Mon hébergeur est en PHP4 et n'accepte que les extensions .php, comment puis-je faire tourner daCode ?

#### Reponse

daCode peut fonctionner avec n'importe quelle extension. Pour les extensions usuelles (.php, .php3 et .php4), il suffit dans le répertoire daCode de taper (sous Unix) prompt$ make php pour transformer toutes les extensions ainsi que les liens à l'intérieur des fichiers. Votre version de daCode est alors prête à être chargée sur le serveur. Si vous avez besoin d'extensions exotiques, il est facile de modifier le Makefile en conséquence, demandez sur la liste de diffusion dacode-user@linuxfr.org si vous n'y arrivez pas. Il faut néanmoins faire attention à deux choses : CVS ne marche qu'avec les extensions originales et ne saura pas gérer les mises à jour si vous les changez, ainsi que la configuration par « make reconf ». Il faut alors temporairement repasser en .php3 : prompt$ make php3 prompt$ cvs update éventuellement, si vous avez défini un fichier daCode/config.site prompt$ make reconf puis prompt$ make php

### Je n'ai pas accès à la commande mysql. Comment puis-je créer ma base de données?

#### Reponse

Utilisez phpMyAdmin. Souvent, votre hebergeur l'a déja mis en place et paramétré pour vous. Voyez avec lui commment y accéder. Sinon, téléchargez et installez-le, ce n'est pas très compliqué.

Voici comment y accéder si vous êtes sur Free: aller sur http://www.phpmyadmin.free.fr/phpMyAdmin/ puis, dans la page d'accueil (il faut cliquer sur le login a gauche pour qu'elle apparaisse).

Pour créer la base: cliquer sur parcourir dans la section Executer une ou des requètes sur la base puis choisir le fichier sql/dacode.mysql

On crée un paquet de tables alors il faudra peut être insister et le faire plusieurs fois car ça a tendance à bugger selon la charge, le nombre d'utlisateurs connectés et l'age du capitaine.

Autre remarque (spécifique à free): le fait de créer un paquet de base peut vous pourrir un peu la vie si vous aviez déjà quelques trucs. Je ne saurais trop vous conseiller de vous créer un sous-domaine chez free (ils le proposent gracieusement) réservé à vos pages sous dacode. N'oubliez pas de mettre en place vos bases de données sur le sous domaine...

### Puis-je utiliser daCode sur Free?

#### Reponse

Oui, ça fonctionne, avec certaines limitations. Les problèmes principaux sont avec la fonction mail() qui est désactivée et la vitesse.

Voici un exemple de fichier de config:

    <?
                $this->sql_backend  = "mysql";

    	    $this->sql_host     = "free.fr";
    	    $this->sql_user     = "monloginfree";
                $this->sql_passwd   = "monmotdepassefree";
    	    $this->sql_db       = "monloginfree";

    	    $this->basehref     = "http://monlogin.free.fr/news";
                $this->name         = "lecastor";
                $this->titledefault = "castor : le site";

    	    $this->edito = "Bienvenue sur ma page de
                news.<br>Cette page tourne sous
                <b>daCode</b>.<br>";

                $this->newsfile = "/gen.php3?";
                $this->htmldir = "cache/";
                $this->cachedir = "../tmp/";
                $this->sql_persistant = 0;
    &>

Les pages HTML seront alors cachées sous \verb+/news/cache/+, et les fragments de pages (boites) sous /tmp. Vérifier en se connectant au serveur ftp après s'être baladé que l'on obtient bien des choses dans ces 2 répertoires.

Après avoir sauvé le fichier dans la racine (cf le début du document), on fait un

    make reconf

et on peut tout balancer sur le site.

Dans notre cas de figure, on va mettre tout ce qu'il y a dans /src/htdocs/ dans le répertoire /news (c'est à dire le répertoire donné dans le champ baseref) du site et tout ce qu'il y a dans \verb+/src/phplib+ dans le répertoire /phplib du site.

### J'ai un problème avec la fonction mail. Il semblerait qu'elle ne fonctionne pas.

#### Reponse

La fonction mail() a probablement été désactivée (ce qui est le cas sur free.fr, par exemple). Demandez à votre hébergeur si c'est le cas et si une fonction de remplacement est disponible. Le GROS problème est que sans un moyen d'envoyer automatiquement les emails, les utilisateurs ne recevront jamais leur mot de passe, et les comptes ne seront donc pas créés.

Si une fonction de remplacement est fournie par votre hébergeur, cherchez dans le code source les appels à la fonction mail() et remplacez-les par la fonction fournie par votre hébergeur. Faites attention au nombre et à l'ordre des arguments de la fonction, qui peut être différent de celui de mail(). S'il n'y a aucune solution de remplacement proposée, ou si vous pouvez juste vous envoyer un mail à vous-même, il y a quelques façons assez laides de contourner le problème:

La première solution (proposée par Mathieu Ros): si vous avez un moyen de vous envoyer des mails à vous-même, utilisez ce moyen pour vous envoyer les mots de passe... Evidemment, vous connaîtrez les mots de passe de tous vos utilisateurs...

La seconde solution (proposée par Guillaume Postaire): affichez le mot de passe au lieu de l'envoyer par email.

### J'obtiens souvent une erreur "Maximum execution time exceeded". Qu'est-ce que je peux faire?

#### Reponse

Enlevez toutes les fonctionnalités dont vous ne vous servez pas. De plus,n désactivez toutes les fonctions dans src/phplib/backends.php3. Ajoutez un "return;" au début de chaque fonction dans ce fichier. Une fois que la vitesse d'execution est satisfaisante, vous pourrez peut-être réintroduire certaines fonctionnalités...

### daCode m'affiche: Fatal error: Forbidden port in your script on line 97.

#### Reponse

Problème connu. Dans le thème linuxfr dans newsindex.tmpl il appelle une fonction qui affiche les dernières version du noyau Linux. Il faut commenter (diese en début de ligne) dans le template du thème, car free refuse les accès finger de son réseau vers l'exterieur.

## Configuration

### Y un moyen pour configurer l'emplacement des fichiers de dacode ?

#### Reponse

Ce que tu dois pouvoir faire c'est de mettre phplib dans htdocs/. Ensuite dans htdocs/dacode.php3 tu modifies $libdir. Bon si j'étais toi je ne mettrai pas phplib/ mais plutôt un truc difficile à trouver (on ne sait jamais). Donc tu fais par exemple:

    mv phplib htdocs/UoS6LzGF

Puis dans dacode.php3 à la ligne 14 tu mets:

            $libdir = $topdir. "./UoS6LzGF";

Voilà qui devrait marcher.

## Problemes divers

###

J'ai une erreur "Cannot redefine class ..."

J'utilise phplib. Puis je quand même utiliser daCode?

#### Reponse

Ceci ne s'applique que si vous avez une ligne auto_prepend dans votre php.ini. Si vous utilisez Apache, Vous pouvez déplacer cette ligne dans un fichier nommé .htaccess (c'est un fichier que vous mettez dans vos répertoires qui utilisent phplib). Pour que ça fonctionne bien, vous devez vous assurer dans httpd.conf (directive directory / AllowOverride ) pour être bien sur que ces fichiers sont pris en compte. Ci dessous un exemple de .htaccess pour php4:

    <IfModule mod_php4.c>
        #
        # local settings for php in this domain
        # include path is the path where PHP looks for
        # required and included files
        #
    #php_value include_path
    ".:/home/httpd/lib/externs/phplib/php/:/home/httpd/lib/php/internal/"
      php_value auto_prepend_file
    /home/httpd/lib/externs/phplib/php/prepend.php3
    </IfModule>

### Je n'obtiens que des pages blanches.

#### Reponse

Cela vient très certainement de la base de données qui n'est pas prise en compte par PHP. Pour s'en rendre compte, il faut regarder dans le fichier de configuration de php (php.ini ou php3.ini) si les extensions sont bien chargées. Il ne suffit pas que le programme soit installé, il faut aussi demander à PHP de l'utiliser.

Si l'extension n'est pas chargée, il faut modifier le fichier de configuration et relancer le serveur web. Une autre façon de détecter si le support de la base de données est activé est d'écrire un fichier phpinfo.php3 contenant la ligne et d'appeler ce fichier. Si le support de la base de données est activé, un paragraphe doit y être consacré dans l'affichage.

### Je n'arrive pas à me connecter à MySQL en tant que root. Je suis pourtant sûr du mot de passe du root.

#### Reponse

Le mot de passe qu'utilise le MySQL n'est pas le même que le mot de passe root de la machine. Par défaut MySQL, il n'y a pas de mot de passe.

Il faut en spécifier un avec la commande mysqladmin: mysqladmin -u root password motdepasse

## Personalisation

### Comment changer l'apparence du site? Comment supprimer certains élements de la page?

#### Reponse

En fait la procedure est de creer ton propre template. Je te conseille de lire le fichier template.txt dans le repertoire doc, il devrait t'aider sur la question...

Pour l'agenda par exemple il faut retirer la ligne <!-- daCode: $backends->agenda() --> dans le fichier newsindex.tmpl et tous les autres fichiers ou elle pourrait apparaitre...

Pour customiser le sous titre du logo, il suffit d'editer la fonction header() du html.php3 dans le reperetoire phplib/themes/montheme ...

Mais encore une fois, je ne peux que te recommander TRES vivement la lecture de templates.html

## Utilisation de daCode

### J'ai changé le mot de âsse dans la base de données, et je ne peux plus m'identifier en tant qu'admin.

#### Reponse

Les mots de passe sont effectivements cryptés. On ne peux pas les changer directement dans la base. Si l'entrée admin dans la table users a le champs email bien configuré (ton email) alors un simple 'j'ai oubli? mon mot de passe' te l'enverra à cette adresse (enfin il envoie un nouveau en fait).