L’essentiel
La configuration de Phraseanet se fait via le fichier config/configuration.yml. A chaque mise à jour de celle-ci, il est nécessaire de recompiler la configuration via la commande suivante :
`bin/console compile:configuration`.
La configuration de Phraseanet est écrite dans le fichier config/configuration.yml qui est automatiquement généré à l’installation.
Ce fichier est au format YAML, qui a pour intérêt d’être très lisible. Pour des raisons de performance, et notamment de cache opcode, la configuration est compilée.
En contre partie il est nécessaire de recompiler après une mise à jour.
La compilation de la configuration est très facile et rapide à éxecuter. Il faut utiliser la commande bin/console compile:configuration.
bin/console compile:configuration
Voici un exemple de fichier de configuration commenté
main:
servername: 'http://phrasea.example.com/' # (string) L'URL à partir de laquelle sera accessible Phraseanet
maintenance: false # (boolean) Activation du mode maintenance
languages: ['fr_FR', 'de_DE'] # (array) Un tableau de code de langues actives. Toutes les langues sont activées si le tableau est vide
database: # (array) Configuration du serveur de base de données
host: 'sql-host' # (string) Adresse du serveur de base de données
port: 3306 # (integer) Port du serveur de base de données
user: 'sql-user' # (string) Nom d'utilisateur du serveur de base de données
password: 'sql-password' # (string) Mot de passe du serveur de base de données
dbname: ab_phraseanet # (string) Nom de la base de données
driver: pdo_mysql # (string) Driver de base de données
charset: UTF8 # (string) Encodage de la connection au serveur de base de données
database-test: # (array) Configuration pour les tests (développeurs uniquement)
driver: pdo_sqlite
path: '/tmp/db.sqlite'
charset: UTF8
api-timers: true # (boolean) Ajout de timers aux réponses de l'API (développeurs uniquement)
cache: # (array) Configuration du service de cache
type: MemcacheCache # (string) Nom de l'adapter du service de cache
options: # (array) Options de configuration du service de cache
host: localhost # (string) Addresse du serveur de cache
port: 11211 # (integer) Port du serveur de cache
opcodecache: # (array) Configuration du service de cache opcode
type: ArrayCache # (string) Nom de l'adapter du service de cache
options: [] # (array) Options de configuration du service de cache
search-engine: # (array) Configuration du service de moteur de recherche
type: Alchemy\Phrasea\SearchEngine\Phrasea\PhraseaEngine # (string) Nom du service de moteur de recherche (FQCN)
options: [] # (array) Options de configuration du service de moteur de recherche
task-manager:
logger:
level: INFO # (string) Le niveau de log minimum
max-files: 10 # (integer) Le nombre maximum de fichiers de log à conserver
enabled: true # (boolean) Activer les logs dans le système de fichier
trusted-proxies: [] # (array) Configuration des proxies de confiance
debugger: # (array) Configuration du debugger (développeurs uniquement)
allowed-ips: [] # (array) Adresses IP autorisées à acceder au debugger.
binaries: # (array) Configuration des executables externes
ghostscript_binary: null # (string) Chemin vers l'executable Ghostscript, null pour autodetecter (gs)
php_binary: null # (string) Chemin vers l'executable PHP, null pour autodetecter (php)
swf_extract_binary: null # (string) Chemin vers l'executable Pdf2Swf, null pour autodetecter (pdf2swf)
pdf2swf_binary: null # (string) Chemin vers l'executable SwfExtract, null pour autodetecter (swfextract)
swf_render_binary: null # (string) Chemin vers l'executable SwfRender, null pour autodetecter (swfrender)
unoconv_binary: null # (string) Chemin vers l'executable Unoconv, null pour autodetecter (unoconv)
ffmpeg_binary: null # (string) Chemin vers l'executable FFMpeg, null pour autodetecter (ffmpeg, avconv)
ffprobe_binary: null # (string) Chemin vers l'executable FFProbe, null pour autodetecter (ffprobe, avprobe)
mp4box_binary: null # (string) Chemin vers l'executable MP4Box, null pour autodetecter (MP4Box)
pdftotext_binary: null # (string) Chemin vers l'executable PdfToText, null pour autodetecter (pdftotext)
phraseanet_indexer: null # (string) Chemin vers l'executable Phraseanet Indexer, null pour autodetecter (phraseanet_indexer)
ffmpeg_timeout: 3600 # (integer) Timeout pour FFMpeg
ffprobe_timeout: 60 # (integer) Timeout pour FFProbe
gs_timeout: 60 # (integer) Timeout pour Ghostscript
mp4box_timeout: 60 # (integer) Timeout pour MP4Box
swftools_timeout: 60 # (integer) Timeout pour SwfTools (swfrender, swfextract)
unoconv_timeout: 60 # (integer) Timeout pour Unoconv
border-manager: # (array) Configuration du service douanes
enabled: true # (boolean) Activation du service de douane
extension-mapping: # (array) Un tableau de correspondance extension vers type mime personnalisé
mpeg: video/mpeg
checkers: # (array) Liste de points de contrôle
- # (array) Verification de doublonnage par somme de côntrole
type: Checker\Sha256
enabled: true
-
type: Checker\UUID # (array) Verification de doublonnage par métadonnée UUID
enabled: true
-
type: Checker\Colorspace # (array) Verification de colorspace
enabled: false
options:
colorspaces: [cmyk, grayscale, rgb]
-
type: Checker\Dimension # (array) Verification de dimensions
enabled: false
options:
width: 80
height: 160
-
type: Checker\Extension # (array) Verification d'extension
enabled: false
options:
extensions: [jpg, jpeg, bmp, tif, gif, png, pdf, doc, odt, mpg, mpeg, mov, avi, xls, flv, mp3, mp2]
-
type: Checker\Filename # (array) Verification de doublonnage par nom de fichier
enabled: false
options:
sensitive: true
-
type: Checker\MediaType # (array) Vérification par type media
enabled: false
options:
mediatypes: [Audio, Document, Flash, Image, Video]
authentication: # (array) Configuration de l'authentification
auto-create: # (array) Configuration de la création de compte automatique
enabled: false # (boolean) Activer la création de compte automatique
templates: { } # (array) Nom ou id des modèles à appliquer lors de la création automatique de comptes
captcha: # (array) Configuration du service de captchas
enabled: true # (boolean) Activation du service de captcha
trials-before-display: 9 # (integer) Nombre d'essais avant capctcha
providers: # (array) Configuration des fournisseurs d'authentification tiers
facebook: # (array) Configuration de l'authentification via Facebook
enabled: false # (boolean) Activation du fournisseur
options:
app-id: '' # (string) Identifiant (id) Facebook
secret: '' # (string) Secret (secret) Facebook
twitter: # (array) Configuration de l'authentification via Twitter
enabled: false # (boolean) Activation du fournisseur
options:
consumer-key: '' # (string) Twitter consumer key
consumer-secret: '' # (string) Twitter consumer secret
google-plus: # (array) Configuration de l'authentification via Google Plus
enabled: false # (boolean) Activation du fournisseur
options:
client-id: '' # (string) Google Plus client-id
client-secret: '' # (string) Google Plus client-secret
github: # (array) Configuration de l'authentification via GitHub
enabled: false # (boolean) Activation du fournisseur
options:
client-id: '' # (string) GitHub client-id
client-secret: '' # (string) GitHub client-secret
viadeo: # (array) Configuration de l'authentification via Viadeo
enabled: false # (boolean) Activation du fournisseur
options:
client-id: '' # (string) Viadeo client-id
client-secret: '' # (string) Viadeo client-secret
linkedin: # (array) Configuration de l'authentification via LinkedIn
enabled: false # (boolean) Activation du fournisseur
options:
client-id: '' # (string) LinkedIn client-id
client-secret: '' # (string) LinkedIn client-secret
registration-fields: # (array) Configuration des champs disponible requis à l'inscription
-
name: company
required: false # (boolean) Le champ est proposé, mais pas obligatoire
-
name: firstname
required: true # (boolean) Le champ est proposé et obligatoire
xsendfile: # (array) Configuration Sendfile (Nginx) / XSendFile (Apache)
enabled: false # (boolean) Activation de la prise en charge SendFile/XSendFIle
type: nginx # (string) Type XSendFile (`nginx` ou `apache`)
mapping: [] # (array) Mapping des dossiers (voir configuration for :ref:`Apache<apache-xsendfile>` and :ref:`Nginx<nginx-sendfile>`)
user-settings: # (array) Un tableau de valeur par défaut pour les préférences utilisateurs
images_per_page: 60
images_size: 200
plugins: [] # (array) Configuration des :doc:`plugins <Plugins>`.
session:
idle: 3600 # (integer) Durée d'inactivité (en secondes) avant déconnexion
lifetime: 604800 # (integer) Durée maximum de session (en secondes)
api_cors:
enabled: false # (boolean) Activation du CORS sur l'API.
allow_credentials: false # (boolean) Inclus les cookies dans les requêtes CORS.
allow_origin: ['*'] # (array) La liste des domaines autorisés à envoyer des requêtes sur l'API.
# '*' pour autoriser les demandes de toutes origines.
allow_headers: [] # (array) La liste des headers supportés par le server.
allow_methods: ['GET', 'POST', 'PUT'] # (array) La liste des methodes HTTP supportées.
expose_headers: ['X-Custom-Header'] # (array) La liste des headers autres que (Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma)
# à exposer au client.
max_age: 0 # (integer) Authorise la réponse "preflight" à être cachée pour X secondes.
hosts: ['api-cors.domain.com'] # (array) Liste des noms de domaine ou le CORS est activé.
static-file:
enabled: false # (boolean) Activation vignettes statiques.
type: nginx # (string) Type StaticFile (`nginx` ou `apache`)
symlink-directory: '' # (string) Le répertoire ou seront crées les liens symboliques vers les images
lazyload: false # (boolean) Activation du lazyload pour l'affichage des vignettes (obsolete si l'option static-file est activée)
Les langues disponibles ainsi que leurs codes respectifs sont les suivants :
Les différents fournisseurs d’authentification se configurent simplement. Il suffit de créer une application “Phraseanet” chez le fournisseur en lui spécifiant l’URL de callback adéquate.
Note
Les URLs de callback fournies sont des exemples présupposant que Phraseanet est installé à l’adresse http://phraseanet.mondomaine.com. Il faut adapter ces URLs en fonction de l’adresse réelle.
Les services de cache cache et opcode-cache peuvent être configurés avec les adapteurs suivants :
Nom | Service | Description | Options |
---|---|---|---|
MemcacheCache | cache | Serveur de cache utilisant l’extension PHP Memcache | host, port |
MemcachedCache | cache | Serveur de cache utilisant l’extension PHP Memcached | host, port |
RedisCache | Cache | Serveur de cache utilisant l’extension PHP redis | host, port |
ApcCache | opcode-cache | Cache opcode utilisant PHP APC | |
XcacheCache | opcode-cache | Cache opcode utilisant PHP Xcache | |
WinCacheCache | opcode-cache | Cache opcode utilisant PHP WinCache | |
ArrayCache | cache | opcode-cache | Cache désactivé |
Deux services de moteurs de recherche sont disponibles : Phrasea engine et SphinxSearch engine.
Nom | Options |
---|---|
Alchemy\Phrasea\SearchEngine\Phrasea\PhraseaEngine | |
Alchemy\Phrasea\SearchEngine\SphinxSearch\SphinxSearchEngine | host, port, rt_host, rt_port |
Si Phraseanet est derrière un reverse-proxy, renseigner l’adresse du reverse proxy pour que les adresses IP des utilisateurs soient reconnues.
trusted-proxies:
192.168.27.15
10.0.0.45
La section registration-fields permet de personnaliser les champs disponibles à l’inscription ainsi que leur caractère obligatoire.
registration-fields:
-
name: company
required: false
-
name: firstname
required: true
id | Nom |
login | Identifiant |
gender | Sexe |
firstname | Prénom |
lastname | Nom |
address | Adresse |
zipcode | Code Postal |
geonameid | Ville |
position | Poste |
company | Société |
job | Activité |
tel | Téléphone |
fax | Fax |
La configuration xsendfile doit être manipulée à l’aide des outils en ligne de commandes. Les documentations pour Nginx et Apache sont disponibles.
Les plugins se configurent aussi dans ce fichier. Se référer à la documentation des plugins pour cette partie.
Les points de vérification du service de douane sont configurables. Il est aussi possible de créer son propre point de vérification.
Verification | Description | Options |
---|---|---|
CheckerSha256 | Vérifie si le fichier n’est pas un doublon En se basant sur la somme de controle “sha256” | |
CheckerUUID | Vérifie si le fichier n’est pas un doublon En se basant sur l’identifiant unique du fichier | |
CheckerDimension | Vérification sur les dimensions du fichier (* si applicable) | width : largeur du fichier height : hauteur du fichier |
CheckerExtension | Vérification sur les extensions du fichiers | extensions : les extensions de fichiers autorisées |
CheckerFilename | Vérifie si le fichier n’est pas un doublon En se basant sur son nom | sensitive : active la sensibilité à la casse |
CheckerMediaType | Vérification sur le type du fichier (Audio, Video...) | mediatypes : les types de médias autorisés |
CheckerColorspace | Vérification sur l’espace de couleur du fichier (* si applicable) | colorspaces : les types d’espaces colorimétriques autorisés |
Le service de douane permet également de personnaliser la détection des types mime via le paramètre extension-mapping. Sur certains systèmes, des mauvais types mimes peuvent être détectés. Utiliser ce tableau pour forcer un type mime en fonction d’une extension de fichier.
Il est possible de restreindre la portée d’un point de vérification sur un ensemble de collections en fournissant une liste de base_id correspondant :
#services.yml
Border:
border_manager:
type: Border\BorderManager
options:
enabled: true
checkers:
-
type: Checker\Sha256
enabled: true
collections:
- 4
- 5
La même restriction peut être faite au niveau des databoxes :
#services.yml
Border:
border_manager:
type: Border\BorderManager
options:
enabled: true
checkers:
-
type: Checker\Sha256
enabled: true
databoxes:
- 3
- 7
Note
Il n’est pas possible de restreindre à la fois sur des databoxes et des collections.
Tous les points de vérifications sont déclarés dans le namespace Alchemy\Phrasea\Border\Checker. Il suffit de créer un nouvel objet dans ce namespace. Cet objet doit implémenter l’interface Alchemy\Phrasea\Border\Checker\Checker
Exemple d’un point de vérification qui filtre les documents sur leurs données GPS :
<?php
namespace Alchemy/Phrasea/Border/Checker;
use Alchemy\Phrasea\Border\File;
use Doctrine\ORM\EntityManager;
use MediaVorus\Media\DefaultMedia as Media;
class NorthPole implements Checker
{
private $options;
public function __construct(Array $options)
{
$this->options = $options;
}
//Contrainte de validation, doit retourner un booleen
public function check(EntityManager $em, File $file)
{
$media = $file->getMedia();
if (null !== $latitude = $media->getLatitude() && null !== $ref = $media->getLatitudeRef()) {
if($latitude > 60 && $ref == Media::GPSREF_LATITUDE_NORTH) {
return true;
}
}
return false;
}
}
Déclaration du point de contrôle
border-manager:
enabled: true
checkers:
-
type: Checker\NorthPole
enabled: true
Il est possible de personnaliser les préférences utilisateur par défaut. Les paramètres suivants sont ajustables :
Nom | Description | Valeur par défaut | Valeurs disponibles |
---|---|---|---|
view | Affichage des résultats | thumbs | thumbs (en vignettes) list (en liste) |
images_per_page | Nombre d’image par page de résultat | 20 | |
images_size | Taille des vignettes de résultat | 120 | |
editing_images_size | Taille des vignettes d’édition | 134 | |
editing_top_box | Taille du bloc supérieur d’édition (pourcentage) | 30 | |
editing_right_box | Taille du bloc droit d’édition (pourcentage) | 48 | |
editing_left_box | Taille du bloc gauche d’édition (pourcentage) | 33 | |
basket_sort_field | Index de tri des paniers | name | name (par nom) ou date (par date) |
basket_sort_order | Ordre de tri des paniers | ASC | ASC (ascendant) ou DESC (descendant) |
warning_on_delete_story | Alerter avant la suppression d’un reportage | true | true (oui) ou false (non) |
client_basket_status | Afficher les paniers dans Classic | 1 | 1 (oui) ou 0 (non) |
css | Theme CSS de production | 000000 | 000000 (sombre) ou 959595 (clair) |
advanced_search_reload | Utiliser les dernières options de recherche au chargement | 1 | 1 (oui) ou 0 (non) |
start_page_query | Question par défaut | last | |
start_page | Page de démarrage de production | QUERY | PUBLI (publications) ou QUERY (recherche) ou LAST_QUERY (dernière recherche) |
rollover_thumbnail | Affichage au rollover | caption | caption (notice) ou preview (prévisualisaton) |
technical_display | Afficher les informations techniques | 1 | 1 (oui) ou 0 (non) ou group (groupé avec la notice) |
doctype_display | Afficher une icone correspondante au type de document | 1 | 1 (oui) ou 0 (non) |
basket_caption_display | Afficher la notice des enregistrements dans un panier | 0 | 1 (oui) ou 0 (non) |
basket_status_display | Afficher les status des enregistrements dans un panier | 0 | 1 (oui) ou 0 (non) |
basket_title_display | Afficher le titre des enregistrements dans un panier | 0 | 1 (oui) ou 0 (non) |
Fixe (en secondes) la durée d’inactivité de l’utilisateur avant déconnexion automatique.
Le réglage “idle” est prioritaire sur le réglage “lifetime” et l’option “Se souvenir de moi” n’est alors pas présente sur la page d’accueil.
En cochant “Se souvenir de moi” à l’authentification, durant cette période (en secondes) l’accès à l’application est immédiat sans avoir à se ré-authentifier.
Booléan qui active ou désactive le lazyload des vignettes dans production, cette option est obsolète si l’option “static-file” est activé pour l’affichage des vignettes.
En activant cette option, les vignettes sont servies comme contenu statique. Un lien symbolique est créé pour chaque image.
static-file:
enabled: true
type: nginx
symlink-directory: ''