Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Configuration de PHP

  • magic_quotes_gpc et magic_quotes_runtime doivent être à Off. Si ce n'est pas le cas, il faut activer le plugin magicquotes livré avec jelix.
  • session.auto_start doit être à 0
  • safe_mode doit être à Off (À cause des nombreux fichiers temporaires créés par jelix, il peut être difficile de configurer une installation avec Jelix avec le safe_mode activé)

Il est également recommandé de mettre ces valeurs :

  • register_globals = off
  • asp_tags = off
  • short_open_tag = off

Un phpinfo() peut vous permettre de vérifier votre configuration. Par défaut la configuration se trouve dans un fichier nommé php.ini.

Sur un serveur OVH mutualisé

Si votre serveur de production est chez OVH, vous devez spécifier que vous utilisez PHP 5 (par défaut c'est PHP 4), sinon il y a des parse error. Ça se fait via le fichier ".htaccess" qui sera à la racine publique du site (www/) et vous devez indiquer :

    SetEnv PHP_VER 5
    SetEnv SESSION_USE_TRANS_SID 0

La seconde ligne indique qu'il ne faut pas passer le cookie de session dans l'URL.

Configuration du serveur

Voici ce qu'il faut configurer au niveau du serveur.

Note : À chaque fois que vous modifiez la configuration du serveur web pour votre site, il faut supprimer les fichiers temporaires de jelix (dans temp/myapp etc par ex), afin que Jelix prenne en compte la nouvelle configuration.

Exemple :


sudo rm -rf temp/myapp/*

Si vous pouvez spécifier le document root

Si vous pouvez spécifier la racine du site en modifiant les fichiers de configuration du serveur web ou via une interface d'administration comme le proposent certains hébergeurs, indiquez alors le répertoire myapp/www/ comme étant la racine du site.

Par exemple, avec apache, vous indiquerez dans le fichier httpd.conf, quelque chose comme :


   <VirtualHost *>
      ServerName www.monsite.com
      DocumentRoot /home/monsite/myapp/www/ 
   </VirtualHost>
   <Directory "/home/monsite/myapp/www/">
     AllowOverride None
     Order allow,deny
     Allow from all
   </Directory>

Vous devez indiquer aussi un alias vers le répertoire lib/jelix-www/, en le nommant jelix :


   <VirtualHost *>
      ServerName www.monsite.com
      DocumentRoot /home/monsite/myapp/www/ 
      Alias /jelix/ "/home/monsite/lib/jelix-www/"
   </VirtualHost>
   <Directory "/home/monsite/myapp/www/">
     AllowOverride None
     Order allow,deny
     Allow from all
   </Directory>
   <Directory "/home/monsite/lib/jelix-www/">
     AllowOverride None
     Order allow,deny
     Allow from all
   </Directory>

Note : vous pouvez indiquer un autre nom que "jelix" pour l'alias. Vous devez alors l'indiquer dans l'option jelixWWWPath dans le fichier de configuration de l'application myapp/var/config/mainconfig.ini.php, section urlengine.

Et enfin dans ce même fichier vous ajusterez l'option basePath, en indiquant le chemin jusqu'au index.php (ici donc, /) s:

 basePath="/"

Vous pouvez laisser cette option vide, Jelix la devinera tout seul, sauf pour des applications dans lesquelles vous avez plusieurs points d'entrée dans des répertoires différents.

Ainsi, en tapant http://www.monsite.com vous accédez à votre site, et http://www.monsite.com/jelix/, à jelix-www/, qui contient un certain nombre de scripts javascript utiles etc..

Si vous ne pouvez pas spécifier le document root

Dans ce cas, il est préférable de déplacer le contenu du répertoire monsite/myapp/www à la racine de votre site, monsite/. Vous devriez donc obtenir une arborescence comme ceci :

  monsite/  
    myapp/
    lib/
    temp/
    index.php

Ici dans notre exemple, index.php est un point d'entrée jelix de l'application. Il faut le modifier pour changer les chemins relatifs qu'il contient, et faire de même pour le fichier myapp/application.init.php. Par exemple, après modification, le fichier index.php devrait ressembler à ceci dans notre exemple :


require_once ('myapp/application.init.php');

require_once (JELIX_LIB_CORE_PATH.'request/jClassicRequest.class.php');
$config_file = 'index/config.ini.php';
$jelix = new jCoordinator($config_file);
$jelix->process(new jClassicRequest());

Il faut aussi modifier le fichier myapp/project.xml pour modifier le chemin de chaque répertoire déplacé (les chemins doivent être relatifs au chemin du fichier project.xml) :


<project xmlns="http://jelix.org/ns/project/1.0">
    <!-- ...  -->
    <directories>
        <config>./var/config/</config>
        <log>./var/log/</log>

        <var>./var/</var>
        <www>../</www>
        <temp>../temp/myapp/</temp>
    </directories>
    <entrypoints>
        <!-- ... -->
    </entrypoints>
</project>

Il faut ensuite déplacer le répertoire lib/jelix-www/ à la racine et le renommer en "jelix". Vous obtiendrez :

  monsite/  
    myapp/
    jelix/
    lib/
    temp/
    index.php

Note : vous pouvez indiquer un autre nom que "jelix" pour ce renommage. Vous devez alors l'indiquer dans l'option jelixWWWPath dans le fichier de configuration de l'application, myapp/var/config/mainconfig.ini.php, section urlengine.

  • *Attention : il est fortement recommandé de ne pas mettre vos propres scripts et css dans ce répertoire jelix copié.** Sinon les futures mises à jour risquent d'être plus compliquées, et vos successeurs ou collègues risquent d'être un peu perdu, en ne sachant pas ce qui vient de jelix et ce qui vient de votre appli. Bref, ne touchez pas au contenu de jelix-www ou du répertoire qui est la copie de jelix-www. Mettez vos propres scripts dans un autre répertoire, par exemple dans monsite/js/.

Dans le fichier myapp/application.init.php, vous devez modifier le chemin indiqué à jApp pour le répertoire www (deuxième argument) :


jApp::initPaths(
    $appPath
    $appPath.'../',
    //$appPath.'var/',
    //$appPath.'var/log/',
    //$appPath.'var/config/',
    //$appPath.'scripts/'
);

Vous pouvez alors taper l'adresse de votre site (http://www.monsite.com par exemple, ou http://localhost/)

Configuration pour les urls "cools"

Pour pouvoir utiliser des urls significatives avec le système d'url automatique de jelix, il faut activer dans apache (au niveau de la configuration serveur ou dans le .htaccess si cela est permis) :


   Options +Multiviews

Et pour Apache 2, rajouter :


   AcceptPathInfo on

Pour Apache 2.4, avec php-fpm, il faut ajouter également dans la configuration php-fpm (situé dans par exemple dans /etc/apache2/conf-enabled/php-fpm.conf)


RemoveType .php
<Files "*.php">
    MultiviewsMatch Any
</Files>

Pour vérifier que cela fonctionne, créez sur votre site web un fichier test.php qui affiche phpinfo() et essayez l'url : monsite.com/test/foo/bar . Le phpinfo devrait s'afficher, et vous devriez avoir dans $_SERVER['PATH_INFO'] la chaine "/foo/bar" (voir tout en bas de l'affichage de phpinfo).

Droits sur les répertoires

Vous devez donner le droit en écriture à l'utilisateur exécutant votre serveur web (apache ou autre) au moins sur le répertoire myapp/var/log/, ainsi que tous les répertoires dans le répertoire temp/.

Exemple, sur un serveur debian/ubuntu :


   sudo chown www-data:www-data temp/myapp*  myapp/var/log
   sudo chmod g+w temp/myapp* myapp/var/log

Peut être que pour certaines applications, il y a d'autres répertoires à configurer de la sorte dans myapp/var/. Renseignez-vous dans la procédure d'installation spécifique à cette application si il y en a une.