Installation

Configuration requise

Vous devez utiliser au minimum PHP 5.1, avec les extensions dom, simplexml, pcre, session, spl, mbstring et mcrypt (seules les 2 dernières ne sont en général pas installées par défaut). La version ligne de commande de PHP (PHP-CLI) est également nécessaire pour utiliser les scripts d’administration.

Le mod_rewrite d’Apache devra être activé.

Installation de Stato

Les sources de Stato peuvent être placées n’importe où, de préférence en dehors du répertoire racine de votre serveur web pour plus de sécurité. Elles pourront ainsi être partagées entre plusieurs applications.

Stato comprend les répertoires suivants :

build/
cli/
common/
components/
gemini/
mercury/
vendor/

Création d'une application

Ouvrez une console et placez vous dans le répertoire de Stato. Vous y trouverez un script, stato.php, qui vous permet de créer une nouvelle application ou de lancer les tests unitaires de Stato. Il suffit d’appeller la commande createapp en précisant le nom du projet et le répertoire où le créer pour générer l’arborescence complète de votre application :

php stato.php createapp myproject --path=/var/www

Note pour les utilisateurs de Windows : afin d’appeller l’exécutable de PHP, vous devez placer l’emplacement de votre dossier PHP dans une variable d’environnement. Par exemple (si vous utilisez XAMPP) :

set PATH=d:\xampp\php

Vous obtenez ainsi un répertoire /var/www/myproject contenant l’arborescence suivante :

app/
    apis/
    controllers/
    helpers/
    i18n/
    models/
    views/
        layouts/
cache/
conf/
db/
    migrate/
lib/
log/
public/
    images/
    js/
    styles/
scripts/

Configuration d'Apache

La racine du site doit être le répertoire public/ de votre application, dans lequel se trouve un fichier index.php qui est le point d’entrée de l’appli. Vous trouverez également dans ce répertoire un fichier .htaccess

Avec un virtualhost

<VirtualHost *:80>
    ServerName myproject
    DocumentRoot /var/www/myproject/public
    <Directory "/var/www/myproject/public">
	Options FollowSymLinks
	AllowOverride All
	Order allow,deny
	Allow from all
    </Directory>
</VirtualHost>

En ajoutant une entrée du type 127.0.0.1 myproject dans votre fichier hosts, vous pourrez accéder à votre application par l’adresse http://myproject.

Attention : un bug dans Internet Explorer empêche les sessions de fonctionner si le nom de votre serveur n’est pas valide (par exemple s’il contient un underscore).

Avec un alias

Alias /myproject /var/www/myproject/public
<Directory "/var/www/myproject/public">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Dans ce cas, vous devez éditer le .htaccess présent dans votre répertoire public/ et y ajouter :

RewriteBase /myproject

Votre application sera alors accessible par l’adresse http://localhost/myproject.

PHP, MySQL et UTF-8

Stato est conçu pour pouvoir utiliser l’encodage UTF-8 (bien que d’autres encodages peuvent bien sûr être utilisés). Si PHP5 et MySQL 4.1 supportent l’utf-8, il faut cependant prendre un minimum de précautions afin d’être sûr que vos données soient stockées et affichées proprement.

Config serveurs

httpd.conf :

AddCharset UTF-8 .utf8
AddDefaultCharset UTF-8

php.ini :

default_charset = "utf-8"

my.cnf :

character-set-server=utf8
default-collation=utf8_unicode_ci

et/ou

default-character-set=utf8 

Création de tables

CREATE TABLE document (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  unicodeText VARCHAR(45) NOT NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;

The COLLATE command is used to tell how to sort the data when using the SORT BY command. Also note that you should always use VARCHAR instead of CHAR with UTF-8. (UTF-8 uses variable sized numbers for different characters. For instance, Latin letters use 1 byte codes, while Japanesee characters are 3 bytes. Using CHAR(10) would force the database to reserve 30 bytes, because it doesn’t know ahead of time which length with be used, so it reserves the maximum.)

Connexion à la base (via PHP)

Il faut absolument exécuter la commande suivante (juste après la connection) :

mysql_query("SET NAMES 'utf8'");
// ou si vous utilisez l'extension mysqli :
mysqli_set_charset('utf8');

Remarque : Stato le fait, vous n’avez pas à vous en soucier.

HTML

Ajoutez cette ligne dans la section head :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Il vaut mieux aussi envoyer un petit header avec PHP :

header("Content-Type: text/html; charset=utf-8");

Remarque : Stato le fait, vous n’avez pas à vous en soucier.

Fonctions PHP

Certaines fonctions PHP peuvent poser des problèmes avec l’UTF-8 : selon ce que vous cherchez à faire avec, elles peuvent corrompre vos chaînes UTF-8 ou vous renvoyer un résultat erroné. Vous trouvrez sur le site du WACT une très bonne analyse du problème.

Utilisez les fonctions mbstring de PHP pour traiter vos chaînes UTF-8.

Chargement d'un fichier CSV dans une table

Vous devez bien sûr vous assurer que votre fichier est correctement encodé en utf-8. Hélas, phpMyAdmin ne permet pas de faire le chargement en utf-8 (il semble retomber dans l’encodage ANSI), il faut donc le faire en ligne de commande :

mysql> SET character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
 
mysql> LOAD DATA LOCAL INFILE 'D:\\votre_fichier_utf8.csv' INTO TABLE `votre_table_utf8`FIELDS terminated BY ',' ENCLOSED BY '''' ESCAPED BY '\\' LINES terminated BY '\r\n';
Query OK, 361 rows affected, 0 warnings (0.02 sec)
Records: 361  Deleted: 0  Skipped: 0  Warnings: 0
 
fr/installation.txt · Last modified: 2008/04/04 17:33 by goldoraf