Support¶
Signaler un bug¶
Important
Pour signaler un problème rencontré avec MindFlow, utilisez l’issue tracker sur GITLAB : https://gitlab.com/mindflow/current/issues
Si vous voulez que votre problème soit examiné, nous vous recommandons de présenter une description aussi précise que possible et de fournir si possible un exemple minimal ou fichier permettant de reproduire le problème. Les descriptions laconiques du genre ‘xxx ne marche pas’ ne seront pas traitées.
FAQ¶
Compatibilité¶
MindFlow a été exécuté avec succès sur les configurations suivantes :
- PHP : PHP 5.3 à 7.1
- MYSQL : MySQL 5.1 à MySQL 5.6, MariaDB 5.6
- Serveur HTTP : Apache 2.0, Nginx (cf: MindFlow sous Nginx)
Edition de pages¶
Les images transférées via le module KCFinder de l’éditeur de texte enrichi ne s’affichent pas.¶
KCFinder crée un fichier .htaccess dans le dossier uploads/ de votre site web pour renforcer la sécurité et éviter nottament l’upload de scripts PHP.
Nous avons constaté, sur certains hébergements, que les directives php_flag engine Off
présentes dans le fichier généraient une erreur 500, notament lorsque PHP est n’est pas executé au niveau de l’hébergement en tant que module (dans ce cas PHP est généralement executé en cgi, fcgi, suphp ou php-fpm).
La suppression des commandes php_flag engine Off
permet de restaurer le fonctionnement, mais diminue la sécurité. Il serait possible de la re-configurer via le fichier php.ini, mais attention, cette directive doit être restreinte au dossier uploads/ uniquement, sinon vous bloqueriez l’execution des scripts PHP sur tout l’hébergement.
Plugins¶
Mon module ne s’affiche pas¶
- Vérifiez la valeur de retour de la fonction
getType()
dans votre classe héritée de module :
function getType(){
return 'backend,frontend';
}
Si par exemple ‘frontend’ n’est pas mentionné et que vous souhaitez afficher votre plugin en frontend, alors celui-ci ne sera pas évalué lors d’un rendu frontend. Idem pour le backend. Ce fonctionnement permet d’optimiser les performances, et de ne pas charger et évaluer des plugins inutilisés sur les interfaces frontend ou backend.
- Vérifiez que votre module est bien déclaré dans le fichier
index.php
à la racine du dossier de votre plugin :
$mf->pluginManager->loadModule(
$config['website_pluginsdir']."/dossier_du_plugin",
"sous_dossier_du_module",
"nom_du_plugin",
true
);
- Vérifiez que la valeur du paramètre
autorendering
est à « true » dans votre appel à la fonction->loadPlugin()
- Vérifiez qu’une instance de votre plugin est bien ajoutée au
pluginManager
dans le fichierindex.php
à la racine de votre plugin :
$mf->pluginManager->addPluginInstance(new myPlugin());
Environnement serveur¶
MindFlow sous Nginx¶
MindFlow est développé et testé extensivement sous environnement Apache. Néanmoins, il est capable de tourner avec succès sous Nginx avec la configuration suivante :
server {
# listen ports
listen 80;
listen [::]:80; # IPv6
# spdy for Nginx < 1.9.5
#listen 443 ssl spdy;
#listen [::]:443 ssl spdy;
#spdy_headers_comp 9;
# http2 for Nginx >= 1.9.5
listen 443 ssl http2;
listen [::]:443 ssl http2;
# If in need to study url rewriting problems, writes to website error log
#rewrite_log on;
# website domain name
server_name www.sample-website.com;
# MindFlow hosting directory
root /var/www/html/www.sample-website.com;
# If you want to redirect all requests to https
#if ($scheme = http) {
# return 301 https://$server_name$request_uri;
#}
# If you want to redirect all requests to a main domain
#if ($http_host != $server_name) {
# return 301 https://$server_name$request_uri;
#}
# index file names
index index.php index.htm index.html;
# logg files for this virtual host
access_log /var/log/nginx/www.sample-website.com/access.log;
error_log /var/log/nginx/www.sample-website.com/error.log;
# Charset
charset utf-8;
# Add trailing slash if missing
rewrite ^([^?#]*/)([^?#./]+)([?#].*)?$ $1$2/$3 permanent;
# Cache Static Files
location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
# Do not allow access to hidden files.
location ~ /\. { deny all; }
location ~ /\_ { deny all; }
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
#GZip compression
gzip on;
gzip_vary on;
gzip_types text/css text/javascript text/plain text/xml application/json application/x-javascript application/xml application/xml+rss;
#Enable to increase compresssion. Sacrifices CPU.
gzip_comp_level 9;
#Include your SSL configuration
include nginx.ssl.conf;
client_max_body_size 100M;
location ~ /\.(js|css)$ {
expires 604800s;
}
if (!-e $request_filename){
rewrite ^/(.+)\.(\d+)\.(js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}
# Protect .git files
location ~ /\.git
{
deny all;
}
# Block execution of PHP files in uploads folders
#location ~* /(?:uploads|files)/.*\.php$
#{
# deny all;
#}
# protect configuration files
location ~* /mf_config/.*.php$
{
deny all;
}
location = /mf_websites/www.sample-website.com/config-dev.php{
deny all;
}
location = /mf_websites/www.sample-website.com/config-prod.php{
deny all;
}
# Reecriture pour le sitemap (*)
location /sitemap {
rewrite ^/sitemap\.xml/?$ /mf/plugins/pages/sitemap-pages.php break;
}
location / {
try_files $uri $uri/ /index.php;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 1200;
}
# pass the PHP scripts to FastCGI server
location ~ \.php$ {
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 1200;
}
location ~* ^/(mf/|mf_websites/|mf_librairies/|favicon\.ico) {
}
}