Méthode pour réparer une Mise à jour Magento qui à planté

Lorsque l’on souhaite mettre à jour Magento, nous sommes souvent confronté à quelques difficultés:

Erreur pendant l’update, message d’erreur pendant la ré-indexation, plantage du site, etc … erreur

 Voici la méthode pour s’en sortir :

L’idéal est de partir d’un Magento en état de marche, cette méthode fonctionne aussi avec un Magento planté :

Pre-requis : Avoir accès au serveur via un terminal SSH comme putty et installer l’utilitaire rpl qui permet de faire du « chercher/remplacer » dans les dossiers et fichiers, il est disponible dans  la plupart des distributions linux.

Installation de RPL :

#Sous Debian tapez; apt-get install rpl;
#sous Ubuntu tapez; sudo apt-get install rpl;
#sous Centos tapez; yum install rpl;

1) Créer un dossier un dossier_BIS de votre Magento, je  l’appelerai dossier_BIS 

2) Créer 2 bases vierges  MYSQL via l’outil d’administration serveur (PphpMyAdmin ou plesk ZpanelCP..). Une base que l’on va appeler « final » et une base que l’on va appeler « fraiche« .

Afin de simplifier, si possible, créer ces 2 bases avec le même utilisateur et même mot de passe que votre base Magento originale. (voir app/etc/local.xml).

Dupliquer la base originale de MAGENTO

Vous devez connaitre : username : nom d’utilisateur de la base de données,  password : Mot de passe, dbname : nom de la Base de données, vous pouvez retrouver ces informations dans le fichier local.xml du dossier /MonDossierMagento/app/etc/local.xml

Dans un premier temps on va exporter la base de données de votre Magento original :

mysqldump -u username -ppassword dbname > export.sql

-On  modifie l’export.sql afin que la base « final » pointe vers le  dossier_BIS 

rpl '/MonDossierMagento/' '/dossier_BIS/' export.sql;

MonDossierMagento = le nom du dossier actuel de votre magento, juste le nom du dossier rien d’autre.

(Cela évite de toucher le core_config_data c’est plus efficace)

-On importe le fichier export.sql corrigé vers la base que l’on a appelé  « final »

mysql -h localhost -u username -ppassword final <export.sql

Première étape est terminée, on peut supprimer export.sql

rm export.sql

On va dupliquer le dossier Magento  dans un dossier_bis

cp -R -f /var/www/Le_Chemin_Vers_Dossier/Mon_Magento/ /var/www/Le_Chemin_Verse_Dossier/dossier_bis/;

-On purge les logs/reports/caches…

rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks; 
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache; 
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

-On vérifie qu’il n’y a plus au fichier qui pointe vers le dossier du Magento original

rpl -R '/MonDossierMagento/' '/dossier_BIS/' /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;

(Cela évite entre autre de corriger le download/connect.cfg)

Testez-le vous devriez avoir un joli clone de votre Magento  http://votreSite.xx/dossier_bis

Vous avez un Magento identique qui fonctionne mais qui n’est pas encore updaté, on va pouvoir l’upgrader en tout sécurité 🙂

Résumer : vous pouvez en faire un script pour automatiser cette tâche

mysqldump -u username -ppassword dbname > export.sql;
rpl '/MonDossierMagento/' '/dossier_BIS/' export.sql;
mysql -h localhost -u username -ppassword final <export.sql;
rm export.sql;
cp -R -f /var/www/Le_Chemin_Vers_Dossier/Mon_Magento/ /var/www/Le_Chemin_Verse_Dossier/dossier_bis/;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
rpl -R '/MonDossierMagento/' '/dossier_BIS/' /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;

____________________________________________________

Maintenant nous allons mettre à jour  en ligne de commande :

1) Accédez au dossier _bis, mettre en mode maintenance puis donner les droits :

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
touch maintenance.flag;### mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

2)  initialiser magento connect:

rm downloader/connect.cfg  &> /dev/null;
rm -rf var/cache/* downloader/pearlib/cache/* downloader/pearlib/download/* &> /dev/null;
./mage mage-setup;
./mage sync --force;
./mage config-set preferred_state stable ; ## (stable, beta ou alpha);
./mage list-upgrades ;

3) Mise à jour  de Mage_All_Latest :

./mage install http://connect20.magentocommerce.com/community Mage_All_Latest --force ;
rm -rf var/cache/* ;rm downloader/pearlib/cache/*;rm downloader/pearlib/download/* ;
rm maintenance.flag;### fin du mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

Testez votre site;  si ça fonctionne il est à jour,  (pensez à vérifier l’indexation) !  s’il ne fonctionne pas continuer ce tutoriel.

Votre site fonctionne mais pas la ré-indexation ? si elle ne fonctionne pas correctement (blocages ou erreurs)  continuer ce tutoriel

4 ) Mise à jour  Complète :

la mise à jour complète est nécessaire si Mage_All_Latest n’a pas réussi à mettre à jour Magento:

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
touch maintenance.flag;### mode Maintenance;
chmod -R 777 .; ### tous les droits (pensez a les refermer après)

./mage upgrade-all --force

rm -rf var/cache/* ;rm downloader/pearlib/cache/*;rm downloader/pearlib/download/* ;
rm maintenance.flag;### fin du mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

Testez votre site;  si ça fonctionne il est à jour,  (pensez à re-vérifier l’indexation) !  s’il ne fonctionne toujours pas continuer ce tutoriel.

____________________________________________________

Erreur classique « Base table or view exists : 1050 Table .. ‘catolog_product_entity_group_price’ etc..

erreur

Maintenant nous allons nettoyer la base :

un certains nombres de tables n’ont pas supportées la mise à jour, nous allons les supprimer, pour que magento puissent les créer correctement.

Ces tables sont en générale vides, vous pouvez les vérifier avec phpmyadmin

Sauf la table des codes de réductions, vous devrez les re-saisir.

mysql -h localhost -u username -ppassword final -e "SET foreign_key_checks = 0;
update core_resource set version='1.6.0.0.19' where code='catalog_setup';
update core_resource set data_version='1.6.0.0.19' where code='catalog_setup';
update core_resource set version='1.6.0.1' where code='eav_setup';
update core_resource set data_version='1.6.0.1' where code='eav_setup';
update core_resource set version='1.6.0.6' where code='sales_setup';
update core_resource set data_version='1.6.0.6' where code='sales_setup';
update core_resource set version='1.6.0.3' where code='salesrule_setup';
update core_resource set data_version='1.6.0.3' where code='salesrule_setup';
update core_resource set version='1.6.0.0.1' where code='reports_setup';
update core_resource set data_version='1.6.0.0.1' where code='reports_setup';
update core_resource set version='1.6.0.0.1' where code='xmlconnect_setup';
update core_resource set data_version='1.6.0.0.1' where code='reports_setup';
drop table if exists oauth_consumer ;
drop table if exists oauth_token ;
drop table if exists oauth_nonce ;
drop table if exists captcha_log;
drop table if exists api2_acl_role;
drop table if exists api2_acl_user;
drop table if exists api2_acl_rule;
drop table if exists api2_acl_attribute;
drop table if exists salesrule_coupon;
drop table if exists salesrule_website;
drop table if exists report_viewed_product_aggregated_daily;
drop table if exists catalog_product_entity_group_price;
drop table if exists tm_core_module;
drop table if exists turnkeye_testimonial;
";
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
rm maintenance.flag;### fin du mode Maintenance;

Puis lancer votre site/dossier_bis dans votre navigateur 

 http://votreSite.xx/dossier_bis

ça doit être assez long..  

PS : si vous avez des erreurs APACHE/PHP, c’est que le temps d’attente « Time_out » du serveur est trop court, il faut le rallonger par exemple passer le time_out de 60 à 600 (60 secondes à 10 minutes) voir tutoriel optimiser serveur apache ou serveur ngnix plesk.

Votre Mise à jour est presque terminée, le site fonctionne, mais il manque des tables, la ré-indexation ne peut pas s’exécuter.

____________________________________________________

 Corriger la base de données Magento – Réparer l’indexation avec magento-db-repair-tool

nous allons créer une base de référence « fraiche » , le but est d’avoir une base de données sans défaut correspondant à votre installation.

Notez la clé de votre app/etc/local.xml on va en avoir.

Exemple : <key><![CDATA[60251864b2bb517851cf6d0exemple7f6478b3e]]></key>

On va renommer app/etc/local.xml en app/etc/local.xml-avant et re-vider la cache

Le bu est de créer une base de données de référence que l’on va appeler : fraiche

mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml-avant;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

Puis lancer-le  dans votre navigateur vous devriez avoir une jolie install fraîche vers la base  « fraiche »   http://votreSite.xx/dossier_bis

-Suivez les écrans comme si vous faisiez une nouvelle installation : En précisant la nouvelle base de donnée « fraiche »

Testez-le vous devriez avoir un joli Magento  neuf  http://votreSite.xx/dossier_bis nous allons pouvoir réparer la base endommagé.

Remettre le local.xml précédant afin que le site ne pointe plus vers la base de référence « fraiche » mais bien vers la base « final » et re-videz la cache.

mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml-fraiche;
mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local-avant.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

 

Correction de la base de données:

Grace à notre base de référence « fraiche » nous allons pouvoir corriger notre base de données.

1-réparer-la-base

1) Télécharger l’utilitaire :  magento-db-repair-tool sur le site de Magento : http://www.magentocommerce.com/download

2) Décompressez-le et télécharger-le dans le dossier_bis de votre serveur

/var/www/Le_Chemin_De_Votre_Dossier/dossier_bis

3) lancer son exécution dans un navigateur :

http://votreSite.xx/dossier_bis/magento-db-repair-tool-1.1.php

Préciser à gauche la base « final »   et à droite la base de référence « Fraiche »

2-réparer-la-base

il indiquera les corrections qui va apporter

3-réparer-la-base

 

Dans mon cas j’ai du supprimer la table `salesrule_coupon`  cette table n’est pas très importante) c’est la des coupons de réductions (elle sera automatiquement re-créer vide .

Soit vous accédez à la base « final » via PhpMyAdmin et vous supprimez la table, soit en ligne de commande :

mysql -h localhost -u username -ppassword final -e "SET foreign_key_checks = 0; drop table if exists salesrule_coupon;";

Puis relancer   magento-db-repair-tool dans un navigateur :

http://votreSite.xx/dossier_bis/magento-db-repair-tool-1.1.php

Toujour aussi important : vider la cache et lancer la re-indexation 

cd  /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
php shell/indexer.php reindexall;

Après cela : la mise a jour est opérationnelle

 

____________________________________________________

 

il est possible de supprimer et d’installer des extensions aussi en ligne de commandes :

Exemple  avec l’extension Magoch__QuickInform

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/

chmod -R 777 . ;
./mage clear-cache;
./mage mage-setup . 
./mage sync --force 
./mage list-upgrades ;
#installation 
./mage install connect20.magentocommerce.com/community Magoch__QuickInform
#desinstallation
./mage install connect20.magentocommerce.com/community Magoch__QuickInform

 

Optimiser Nginx : Comment éviter 504 Timeout error

Sur un serveur Nginx par defaut une requète ne doit pas mettre plus de 60 secondes.

Au delà  Nginx retourne une page d’erreur « 504 Timeout error », comme si le serveur était « tombé ».

Pour de la consultation classique, ce délai est suffisant, mais lors de requêtes mysql comme une mise à jour de Magento par exemple, une ré-indexation, ou un backup c’est très insuffisant.

Par defaut le time_out est à 60  (60 secondes ) voici comment l’augmenter.

Créer un fichier « mon_nginx.conf »   dans le dossier  /etc/nginx/conf.d/

nano /etc/nginx/conf.d/mon_nginx.conf

contenant :

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 512k;
# Ne pas trop augmenter fastcgi ça utilise de la mémoire pour rien.

Pensez a redémarrer les services nginx pour prendre en compte les modifications :

/etc/init.d/nginx restart;
# ou sur un serveur ubuntu;
sudo /etc/init.d/nginx restart;

__________________________________________

Si vous utilisez un Serveur PLESK 11.5  ou 12 :

Il faut modifier les paramètres PHP et NGNIX :

nginx-1b

 

En plus de la modification si dessus vous devez aussi augmenter : fastcgi_read_timeout 300;

Dans Plesk ► Site Web & Domaines ► Votre Domaine ►  paramètres du serveur Web

en bas de page ajouter :  fastcgi_read_timeout 300;

nginx

 

2)  Modifier aussi les paramètres PHP

Memory_limit à 512 M

max_execution_time 600    (soit 10 minutes)

max_input_time 600 (ne jamais mettre une valeur supérieur à max_execution_time)

facultatif post_max_size  et upload_max_filesize, vous pouvez au contraire vouloir réduire afin de limiter les upload .

PHP

Pensez a redémarrer les services nginx et apache pour prendre en compte les modifications :

/etc/init.d/nginx restart;
# ou sur un serveur ubuntu;
sudo /etc/init.d/nginx restart;

service apache2 restart

Source :  http://kb.parallels.com/en/120210

 

 

Solution: impossible de ré-index Magento !

Votre magento ne veut plus re-indexer ! Pas de panique, voici les points à vérifier :

– avez vous purger le dossier locks ?

C’est lui qui peut bloquer la ré-indexation connectez vous a votre serveur avec putty par exemple, acéder au dossier de votre magento, et lancer la commande de re-indexation :

cd /var/www/vhost/VotreSiteWeb/Magento/
rm -R /var/locks

– Les paramètres du serveur sont-ils correct ? En grossissant la base mysql à besoin de ressource,  si les paramètres php sont d’origines : time_out sont à 60 et limit_ memory a 64/128Mo, etc.. il faut les modifier. voir ce tutoriel ►ici◄

PS : »nul besoin de prendre un serveur plus gros, un serveur puissant mal réglé fera la même chose »

– Avez vous essayé en SSH dans un terminal ?

La re-indexation sera plus rapide et s’il y a une erreur vous aurez un message précis. connectez vous a votre serveur avec putty par exemple, acéder au dossier de votre magento, et lancer la commande de re-indexation :

cd /var/www/vhost/VotreSiteWeb/Magento/
rm -R /var/locks; rm -R /var/cache;
php shell/indexer.php reindexall;

Si des messages d’erreurs apparaissent :

Exemple : exception ‘PDOException’ with message ‘SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn’t match value count at row 1’ 

C’est que la base de données à subit des dommages il va falloir la réparer: il faut utiliser Magento-db-repair-tool-1.1

– voir tutoriel réparer magento avec Magento-db-repair-tool

Extension Magento matrix-rates : Gérer les frais de transport

L’extension Matrix-rates permet de définir facilement les frais de transport, selon le poids ou le prix, la destination, le transporteur très facilement. voici un petit tutoriel, pour vous aider a l’installer :

 

1) installer l’application via Magento connect

A télécharger soit :

– Directement dans Magento ici : http://www.magentocommerce.com/magento-connect/webshopapps-matrixrate-1-multiple-table-rates-extension.html

– Ou le site de l’éditeur ici :   http://www.webshopapps.com/eu/free/matrixrate-shipping-extension.html

 

2) Activer l’extension

Vider la cacher, quittez puis re-entrer dans le Back Office de Magento

le menu de l’extension se trouve dans ►Configuration► Modes de livraison ► Webshoapps Matrix Rates

3) Créer un fichier CVS

Contenant  le descriptif de vos choix et cout de transport  sous cette forme :

"Country","Region/State","Zip/Postal Code","Weight from", "Weight to","Shipping Price","Delivery Type"

Country = Code Pays de 3 caractères, voir : http://fr.wikipedia.org/wiki/Liste_des_codes_pays ou *  = TOUS

Par exemple  :

France, toutes régions =    « FRA », »* »,

Autre exemple  : France, toute région, tout département, pour un achat de 0 à 100€, le port est de 7€, en Colissimo  :

« FRA », »* », »* », »0″, »100″, »7″, « Colissimo »

 

Voici exemple plus complet:

"Country","Region/State","Zip/Postal Code","Weight from", "Weight to","Shipping Price","Delivery Type"
"GBR","*","*","0","5","2.99","1st Class Recorded"
"GBR","*","*","0","32","7.99","ParcelForce 24-48"
"GBR","*","*","32","1000","80.00","Special Pallet Delivery"
"GBR","*","*","2000","2100","0","Collection Only"
"GBR","*","BT","0","5","11.99","1st Class Recorded"
"GBR","*","BT","0","32","14.99","ParcelForce 24-48"
"GBR","*","BT","0","1000","200","Special Pallet Delivery"
"IRL","*","*","0","5","17.99","1st Class Recorded"
"IRL","*","*","0","32","17.99","ParcelForce 24-48"
"*","*","*","0","100","50","shipping Worldwide" 
"*","*","*","100","700","100","shipping Worldwide 100% insurance" 
"*","*","*","700","1500","150","shipping Worldwide 100% insurance"
"*","*","*","1500","999999","250","shipping Worldwide 100% insurance"
"FRA","*","*","1","150","15","Colissimo suivi"
"FRA","*","*","150","500","25","Colissimo suivi"
"FRA","*","*","500","99999","30","Colissimo suivi"
"FRA","*","*","0","500","30","Chronopost + 100% Assurance"
"FRA","*","*","500","9999","39","Chronopost + 100% Assurance"
"FRA","*","*","10000","999999","0","Transport Gratuit !"
"BEL","*","*","150","500","40","Chronopost International + 100% Assurance (Belgique)"
"BEL","*","*","500","99999","49","Chronopost International + 100% Assurance (Belgique)"
"USA","*","*",0,99.99,40,"International"
"USA","*","*",100,199.99,30,"International"
"USA","*","*",200,249.99,40,"International"
"USA","*","*",250,299.9999,50,"shipping Worldwide 100% insurance"
"USA","*","*",10000,999999,0,"Free Shipping - Transport gratuit"

 

 3) Uploader le fichier dans Magento

il suffit de cliquer sur le bouton BROWSE…

Piège ! le bouton « Browse »  n’apparaît pas tant que vous n’êtes pas sur la vue « Main Website » , sélecteur en haut à gauche dans Magento.

 

Aidehttps://sites.google.com/a/webshopapps.com/webshopapps-wiki/extensions/matrix-rates/examples

 

4) Modifier directement dans la base de données :

Pour les utilisateurs chevronners vous pouvez directement modifier en ligne via PHPMYADMIN

la table est :  shipping_matrixrate :  * est remplacé par un 0  (zéro)

Capture-exemple

[EDIT] Dans la dernière version il y a un bouton Export CSV qui évite de modifier la base de données.

Traduire « Remember Me » dans Magento

La traduction de Magento est assez complète proche de 99%.

Cependant  il reste encore quelques mots en anglais. comme « Remember Me »  et « What’s this ? » au panier.

Avant: « Remember Me »  « What’s this? »

 

panier-avant

 

 

 

Après Modification « Se souvenir de moi »

panier-après

 

Solution :

Code avant : 

remember_me.phtml-avant

 

Code après :

remember_me.phtml-après

Explication :

1) Recherhcher le fichier remember_me.phtml dans votre thème.

il est par défaut ici : /VotreDossierMagento/app/design/frontend/base/default/template/persistent/

(mais il n’est pas conseillé de modifier celui par défaut)

2) avec un éditeur de texte modifiez :(‘Remember Me’)  par (‘Se souvenir de Moi’)

3) ajout les cotes <!–   <a href= »# »><?php echo $this->__(‘What\’s this?’) ?></a> –> 

qui veut dire :  désactiver  le code entre les cotes <!– …  –>

 

 

Correction : Bug Magento 1.8 « Memory limit has been reached »

Untitled

Après une mise à jour vers Magento 1.8 je n’avais plus aucune image de mes produits,   même problème  avec un Magento 1.8 tout neuf avec une base vierge.

impossible d’insérer une image,  message d’erreur : « Memory limit has been reached »

Après pas mal de recherche ±2 jours de perdu (Merci Magento), je me suis rendu compte qu’ils ont ajouté dans Magento 1.8 un test de memory_limit de php dans  /magento/lib/varien/image/Adpater/Gd2.php

/**
 * Converts memory value (e.g. 64M, 129KB) to bytes.
 * Case insensitive value might be used.
 *
 * @param string $memoryValue
 * @return int
 */
 protected function _convertToByte($memoryValue)
 {
 if (stripos($memoryValue, 'M') !== false) {
 return (int)$memoryValue * 1024 * 1024;
 } elseif (stripos($memoryValue, 'KB') !== false) {
 return (int)$memoryValue * 1024;
 }
 return (int)$memoryValue;

Problème, ce test est incomplet il ne prend pas en compte les paramétrages en Go « G »  ou en illimité -1  

Il génère donc une fausse erreur  [un bug].

_______________________________________________

SOLUTIONS

 Modifier les paramètres de serveur php :

Ne pas utiliser de fonction illimité (-1)  ou convertir les (Go) G en M (Mo) dans le fichier php.ini

l’emplacement varie selon les installations /etc/php5/apache2/php.ini

  • si la valeur memory_limit = 2G remplacé par 2048M

memory_limit = 2048M

  • si la valeur est memory_limit = -1  changez pour   par exemple 128M
  • Redémarrer le service ou le serveur pour que ce soit pris en compte.
service apache2 stop service apache2 start
  • Enfin videz la cache de Magento
rm /magento/var/session; rm /magento/var/cache;

Bizarrement ça ne sert a rien de le faire dans le fichier .htaccess

_______________________________________________

Si vous utilisez une interface PLESK  

  • Abonnement ► Gérer l’hébergement ► Général Personnaliser ► Paramètre PHP
  • memory_limit   ► Entrer une valeur personnalisé saisissez  128M 
  • NE LAISSEZ PAS ILLIMITE ou PAS DE VALEUR EN G (GO)
  • Redémarrer le service ou le serveur pour que ce soit pris en compte.
service apache2 stop service apache2 start
  • Enfin videz la cache de Magento
rm /magento/var/session; rm /magento/var/cache;

plesk-limit

_______________________________________________

Pour tester votre php  créez un fichier test.php  dans votre dossier magento, puis lancer le de votre navigateur :

test.php   contenant :

<?php
  1. // Affiche toutes les informations, comme le ferait INFO_ALL
  2. phpinfo();
  3. // Affiche uniquement le module d’information.
  4. // phpinfo(8) fournirait les mêmes informations.
  5. phpinfo(INFO_MODULES);
  6. ?>

re-indexer Magento en ligne de commande

 

Avec un terminal ou putty par exemple acceder a votre dossier magento

et tapez :

php shell/indexer.php reindexall

 

si des erreurs apparaissent, c’est très souvent le serveur qui  n’est pas paramétré correctement.

Exemple d’erreur :  

‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0 ou 1

editer php.ini pour mettre Safe_Mode = Off   

puis Redemarrer le service apache2

service apache2 stop;

service apache2 start;

Exemple d’erreur :  

exceptionPDOException‘ with message ‘SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than ‘max_allowed_packet‘ bytes’ in /var/www/vhosts/votresite/httpdocs/shop/lib/Zend/Db/Statement/Pdo.php:228

 

Modifier la configuration du Mysql et redemarrer le Serveur complet.

dans /etc/my.cnf

Augmenter le max_allowed_packet   16M  passer le 32M ou 48M  selon les cas

plus d’info voir :  https://erickranich.wordpress.com/2013/11/26/exemple-de-my-cnf-pour-magento-1-6-1-7-1-8/

 

 

 

 

 

 

 

 

Exemple de php.ini pour Magento 1.6 / 1.7 & 1.8

[PHP]
;;;;;;;;;;;;;;;;;;;
;  /etc/php5/cli/php.ini 
;  LE 26 11 2013 Serveur dédier Ubuntu+ Plesk 11.5 pour Magento
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.
; PHP attempts to find and load this configuration from a number of locations.
; The following is a summary of its search order:
; 1. SAPI module specific location.
; 2. The PHPRC environment variable. (As of PHP 5.2.0)
; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
; 4. Current working directory (except CLI)
; 5. The web server's directory (for SAPI modules), or directory of PHP
; (otherwise in Windows)
; 6. The directory from the --with-config-file-path compile time option, or the
; Windows directory (C:\windows or C:\winnt)
; See the PHP docs for more specific information.
; http://php.net/configuration.file
; The syntax of the file is extremely simple. Whitespace and Lines
; beginning with a semicolon are silently ignored (as you probably guessed).
; Section headers (e.g. [Foo]) are also silently ignored, even though
; they might mean something in the future.
; Directives following the section heading [PATH=/www/mysite] only
; apply to PHP files in the /www/mysite directory. Directives
; following the section heading [HOST=www.example.com] only apply to
; PHP files served from www.example.com. Directives set in these
; special sections cannot be overridden by user-defined INI files or
; at runtime. Currently, [PATH=] and [HOST=] sections only work under
; CGI/FastCGI.
; http://php.net/ini.sections
; Directives are specified using the following syntax:
; directive = value
; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
; Directives are variables used to configure PHP or PHP extensions.
; There is no name validation. If PHP can't find an expected
; directive because it is not set or is mistyped, a default value will be used.
; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a
; previously set variable or directive (e.g. ${foo})
; Expressions in the INI file are limited to bitwise operators and parentheses:
; | bitwise OR
; ^ bitwise XOR
; & bitwise AND
; ~ bitwise NOT
; ! boolean NOT
; Boolean flags can be turned on using the values 1, On, True or Yes.
; They can be turned off using the values 0, Off, False or No.
; An empty string can be denoted by simply not writing anything after the equal
; sign, or by using the None keyword:
; foo = ; sets foo to an empty string
; foo = None ; sets foo to an empty string
; foo = "None" ; sets foo to the string 'None'
; If you use constants in your value, and these constants belong to a
; dynamically loaded extension (either a PHP extension or a Zend extension),
; you may only use these constants *after* the line that loads the extension.
;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; PHP comes packaged with two INI files. One that is recommended to be used
; in production environments and one that is recommended to be used in
; development environments.
; php.ini-production contains settings which hold security, performance and
; best practices at its core. But please be aware, these settings may break
; compatibility with older or less security conscience applications. We
; recommending using the production ini in production and testing environments.
; php.ini-development is very similar to its production variant, except it's
; much more verbose when it comes to errors. We recommending using the
; development version only in development environments as errors shown to
; application users can inadvertently leak otherwise secure information.
;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
;;;;;;;;;;;;;;;;;;;
; The following are all the settings which are different in either the production
; or development versions of the INIs with respect to PHP's default behavior.
; Please see the actual settings later in the document for more details as to why
; we recommend these changes in PHP's behavior.
; allow_call_time_pass_reference
; Default Value: On
; Development Value: Off
; Production Value: Off
; display_errors
; Default Value: On
; Development Value: On
; Production Value: Off
; display_startup_errors
; Default Value: Off
; Development Value: On
; Production Value: Off
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; html_errors
; Default Value: On
; Development Value: On
; Production value: Off
; log_errors
; Default Value: Off
; Development Value: On
; Production Value: On
; magic_quotes_gpc
; Default Value: On
; Development Value: Off
; Production Value: Off
; max_input_time
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; output_buffering
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; register_argc_argv
; Default Value: On
; Development Value: Off
; Production Value: Off
; register_long_arrays
; Default Value: On
; Development Value: Off
; Production Value: Off
; request_order
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; session.bug_compat_42
; Default Value: On
; Development Value: On
; Production Value: Off
; session.bug_compat_warn
; Default Value: On
; Development Value: On
; Production Value: Off
; session.gc_divisor
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; session.hash_bits_per_character
; Default Value: 4
; Development Value: 5
; Production Value: 5
; short_open_tag
; Default Value: On
; Development Value: Off
; Production Value: Off
; track_errors
; Default Value: Off
; Development Value: On
; Production Value: Off
; url_rewriter.tags
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; variables_order
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS"
;;;;;;;;;;;;;;;;;;;;
; php.ini Options ;
;;;;;;;;;;;;;;;;;;;;
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
;user_ini.filename = ".user.ini"
; To disable this feature set this option to empty value
;user_ini.filename =
; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
;user_ini.cache_ttl = 300
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;
; Enable the PHP scripting language engine under Apache.
; http://php.net/engine
engine = On
; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
short_open_tag = on
; Allow ASP-style <% %> tags.
; http://php.net/asp-tags
asp_tags = Off
; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 14
; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
; http://php.net/y2k-compliance
y2k_compliance = On
; Output buffering is a mechanism for controlling how much output data
; (excluding headers and cookies) PHP should keep internally before pushing that
; data to the client. If your application's output exceeds this setting, PHP
; will send that data in chunks of roughly the size you specify.
; Turning on this setting and managing its maximum buffer size can yield some
; interesting side-effects depending on your application and web server.
; You may be able to send headers and cookies after you've already sent output
; through print or echo. You also may see performance benefits if your server is
; emitting less packets due to buffered output versus PHP streaming the output
; as it gets it. On production servers, 4096 bytes is a good setting for performance
; reasons.
; Note: Output buffering can also be controlled via Output Buffering Control
; functions.
; Possible Values:
; On = Enabled and buffer is unlimited. (Use with caution)
; Off = Disabled
; Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
output_buffering = 4096
; You can redirect all of the output of your scripts to a function. For
; example, if you set output_handler to "mb_output_handler", character
; encoding will be transparently converted to the specified encoding.
; Setting any output handler automatically turns on output buffering.
; Note: People who wrote portable scripts should not depend on this ini
; directive. Instead, explicitly set the output handler using ob_start().
; Using this ini directive may cause problems unless you know what script
; is doing.
; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
; Note: output_handler must be empty if this is set 'On' !!!!
; Instead you must use zlib.output_handler.
; http://php.net/output-handler
;output_handler =
; Transparent output compression using the zlib library
; Valid values for this option are 'off', 'on', or a specific buffer size
; to be used for compression (default is 4KB)
; Note: Resulting chunk size may vary due to nature of compression. PHP
; outputs chunks that are few hundreds bytes each as a result of
; compression. If you prefer a larger chunk size for better
; performance, enable output_buffering in addition.
; Note: You need to use zlib.output_handler instead of the standard
; output_handler, or otherwise the output will be corrupted.
; http://php.net/zlib.output-compression
zlib.output_compression = Off
; http://php.net/zlib.output-compression-level
;zlib.output_compression_level = -1
; You cannot specify additional output handlers if zlib.output_compression
; is activated here. This setting does the same as output_handler but in
; a different order.
; http://php.net/zlib.output-handler
;zlib.output_handler =
; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block. This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block. Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
; http://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off
; The unserialize callback function will be called (with the undefined class'
; name as parameter), if the unserializer finds an undefined class
; which should be instantiated. A warning appears if the specified function is
; not defined, or if the function doesn't include/implement the missing class.
; So only set this entry, if you really want to implement such a
; callback-function.
unserialize_callback_func =
; When floats & doubles are serialized store serialize_precision significant
; digits after the floating point. The default value ensures that when floats
; are decoded with unserialize, the data will remain the same.
serialize_precision = 100
; This directive allows you to enable and disable warnings which PHP will issue
; if you pass a value by reference at function call time. Passing values by
; reference at function call time is a deprecated feature which will be removed
; from PHP at some point in the near future. The acceptable method for passing a
; value by reference to a function is by declaring the reference in the functions
; definition, not at call time. This directive does not disable this feature, it
; only determines whether PHP will warn you about it or not. These warnings
; should enabled in development environments only.
; Default Value: On (Suppress warnings)
; Development Value: Off (Issue warnings)
; Production Value: Off (Issue warnings)
; http://php.net/allow-call-time-pass-reference
allow_call_time_pass_reference = Off
; Safe Mode
; http://php.net/safe-mode
safe_mode = Off
; By default, Safe Mode does a UID compare check when
; opening files. If you want to relax this to a GID compare,
; then turn on safe_mode_gid.
; http://php.net/safe-mode-gid
safe_mode_gid = Off
; When safe_mode is on, UID/GID checks are bypassed when
; including files from this directory and its subdirectories.
; (directory must also be in include_path or full path must
; be used when including)
; http://php.net/safe-mode-include-dir
safe_mode_include_dir =
; When safe_mode is on, only executables located in the safe_mode_exec_dir
; will be allowed to be executed via the exec family of functions.
; http://php.net/safe-mode-exec-dir
safe_mode_exec_dir =
; Setting certain environment variables may be a potential security breach.
; This directive contains a comma-delimited list of prefixes. In Safe Mode,
; the user may only alter environment variables whose names begin with the
; prefixes supplied here. By default, users will only be able to set
; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
; Note: If this directive is empty, PHP will let the user modify ANY
; environment variable!
; http://php.net/safe-mode-allowed-env-vars
safe_mode_allowed_env_vars = PHP_
; This directive contains a comma-delimited list of environment variables that
; the end user won't be able to change using putenv(). These variables will be
; protected even if safe_mode_allowed_env_vars is set to allow to change them.
; http://php.net/safe-mode-protected-env-vars
safe_mode_protected_env_vars = LD_LIBRARY_PATH
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://php.net/open-basedir
;open_basedir =
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://php.net/disable-functions
disable_functions =
; This directive allows you to disable certain classes for security reasons.
; It receives a comma-delimited list of class names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://php.net/disable-classes
disable_classes =
; Colors for Syntax Highlighting mode. Anything that's acceptable in
; <span style="color: ???????"> would work.
; http://php.net/syntax-highlighting
;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg = #FFFFFF
;highlight.default = #0000BB
;highlight.html = #000000
; If enabled, the request will be allowed to complete even if the user aborts
; the request. Consider enabling it if executing long requests, which may end up
; being interrupted by the user or a browser timing out. PHP's default behavior
; is to disable this feature.
; http://php.net/ignore-user-abort
;ignore_user_abort = On
; Determines the size of the realpath cache to be used by PHP. This value should
; be increased on systems where PHP opens many files to reflect the quantity of
; the file operations performed.
; http://php.net/realpath-cache-size
;realpath_cache_size = 16k
; Duration of time, in seconds for which to cache realpath information for a given
; file or directory. For systems with rarely changing files, consider increasing this
; value.
; http://php.net/realpath-cache-ttl
;realpath_cache_ttl = 120
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = off
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 60
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60
; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 64M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL | E_STRICT. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
; E_DEPRECATED - warn about code that will not work in future versions
; of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED
; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; It's recommended that errors be logged on production servers rather than
; having the errors sent to STDOUT.
; Possible Values:
; Off = Do not display any errors
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
; On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = Off
; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. PHP's default behavior is to suppress those
; errors from clients. Turning the display of startup errors on can be useful in
; debugging configuration problems. But, it's strongly recommended that you
; leave this setting off on production servers.
; Default Value: Off
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
display_startup_errors = Off
; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors
log_errors = On
; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
; http://php.net/log-errors-max-len
log_errors_max_len = 1024
; Do not log repeated messages. Repeated errors must occur in same file on same
; line unless ignore_repeated_source is set true.
; http://php.net/ignore-repeated-errors
ignore_repeated_errors = Off
; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; source lines.
; http://php.net/ignore-repeated-source
ignore_repeated_source = Off
; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
; http://php.net/report-memleaks
report_memleaks = On
; This setting is on by default.
;report_zend_debug = 0
; Store the last error/warning message in $php_errormsg (boolean). Setting this value
; to On can assist in debugging and is appropriate for development servers. It should
; however be disabled on production servers.
; Default Value: Off
; Development Value: On
; Production Value: Off
; http://php.net/track-errors
track_errors = Off
; Turn off normal error reporting and emit XML-RPC error XML
; http://php.net/xmlrpc-errors
;xmlrpc_errors = 0
; An XML-RPC faultCode
;xmlrpc_error_number = 0
; When PHP displays or logs an error, it has the capability of inserting html
; links to documentation related to that error. This directive controls whether
; those HTML links appear in error messages or not. For performance and security
; reasons, it's recommended you disable this on production servers.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: On
; Development Value: On
; Production value: Off
; http://php.net/html-errors
html_errors = Off
; If html_errors is set On PHP produces clickable error messages that direct
; to a page describing the error or function causing the error in detail.
; You can download a copy of the PHP manual from http://php.net/docs
; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including
; the dot. PHP's default behavior is to leave these settings empty.
; Note: Never use this feature for production boxes.
; http://php.net/docref-root
; Examples
;docref_root = "/phpmanual/"
; http://php.net/docref-ext
;docref_ext = .html
; String to output before an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-prepend-string
; Example:
;error_prepend_string = "<font color=#ff0000>"
; String to output after an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-append-string
; Example:
;error_append_string = "</font>"
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
; The separator used in PHP generated URLs to separate arguments.
; PHP's default setting is "&".
; http://php.net/arg-separator.output
; Example:
;arg_separator.output = "&amp;"
; List of separator(s) used by PHP to parse input URLs into variables.
; PHP's default setting is "&".
; NOTE: Every character in this directive is considered as separator!
; http://php.net/arg-separator.input
; Example:
;arg_separator.input = ";&"
; This directive determines which super global arrays are registered when PHP
; starts up. If the register_globals directive is enabled, it also determines
; what order variables are populated into the global space. G,P,C,E & S are
; abbreviations for the following respective super globals: GET, POST, COOKIE,
; ENV and SERVER. There is a performance penalty paid for the registration of
; these arrays and because ENV is not as commonly used as the others, ENV is
; is not recommended on productions servers. You can still get access to
; the environment variables through getenv() should you need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
variables_order = "GPCS"
; This directive determines which super global data (G,P,C,E & S) should
; be registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive are
; specified in the same manner as the variables_order directive, EXCEPT one.
; Leaving this value empty will cause PHP to use the value set in the
; variables_order directive. It does not mean it will leave the super globals
; array REQUEST empty.
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
request_order = "GP"
; Whether or not to register the EGPCS variables as global variables. You may
; want to turn this off if you don't want to clutter your scripts' global scope
; with user data.
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
; http://php.net/register-globals
register_globals = Off
; Determines whether the deprecated long $HTTP_*_VARS type predefined variables
; are registered by PHP or not. As they are deprecated, we obviously don't
; recommend you use them. They are on by default for compatibility reasons but
; they are not recommended on production servers.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/register-long-arrays
register_long_arrays = Off
; This directive determines whether PHP registers $argv & $argc each time it
; runs. $argv contains an array of all the arguments passed to PHP when a script
; is invoked. $argc contains an integer representing the number of arguments
; that were passed when the script was invoked. These arrays are extremely
; useful when running scripts from the command line. When this directive is
; enabled, registering these variables consumes CPU cycles and memory each time
; a script is executed. For performance reasons, this feature should be disabled
; on production servers.
; Note: This directive is hardcoded to On for the CLI SAPI
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/register-argc-argv
register_argc_argv = Off
; When enabled, the SERVER and ENV variables are created when they're first
; used (Just In Time) instead of when the script starts. If these variables
; are not used within a script, having this directive on will result in a
; performance gain. The PHP directives register_globals, register_long_arrays,
; and register_argc_argv must be disabled for this directive to have any affect.
; http://php.net/auto-globals-jit
auto_globals_jit = On
; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 8M
; Magic quotes are a preprocessing feature of PHP where PHP will attempt to
; escape any character sequences in GET, POST, COOKIE and ENV data which might
; otherwise corrupt data being placed in resources such as databases before
; making that data available to you. Because of character encoding issues and
; non-standard SQL implementations across many databases, it's not currently
; possible for this feature to be 100% accurate. PHP's default behavior is to
; enable the feature. We strongly recommend you use the escaping mechanisms
; designed specifically for the database your using instead of relying on this
; feature. Also note, this feature has been deprecated as of PHP 5.3.0 and is
; scheduled for removal in PHP 6.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/magic-quotes-gpc
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
; http://php.net/magic-quotes-runtime
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
; http://php.net/magic-quotes-sybase
magic_quotes_sybase = Off
; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
auto_prepend_file =
; Automatically add files after PHP document.
; http://php.net/auto-append-file
auto_append_file =
; By default, PHP will output a character encoding using
; the Content-type: header. To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/html
; http://php.net/default-mimetype
default_mimetype = "text/html"
; PHP's default character set is set to empty.
; http://php.net/default-charset
;default_charset = "iso-8859-1"
; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature.
; http://php.net/always-populate-raw-post-data
;always_populate_raw_post_data = On
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
;include_path = ".:/usr/share/php"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
include_path = ".:"
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
; The root of the PHP pages, used only if nonempty.
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
; if you are running php as a CGI under any web server (other than IIS)
; see documentation for security issues. The alternate is to use the
; cgi.force_redirect configuration below
; http://php.net/doc-root
doc_root =
; The directory under which PHP opens the script using /~username used only
; if nonempty.
; http://php.net/user-dir
user_dir =
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
; Whether or not to enable the dl() function. The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them.
; http://php.net/enable-dl
enable_dl = Off
; cgi.force_redirect is necessary to provide security running PHP as a CGI under
; most web servers. Left undefined, PHP turns this on by default. You can
; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
; http://php.net/cgi.force-redirect
;cgi.force_redirect = 1
; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
; every request. PHP's default behavior is to disable this feature.
;cgi.nph = 1
; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
;cgi.redirect_status_env = ;
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1
; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
; security tokens of the calling client. This allows IIS to define the
; security context that the request runs under. mod_fastcgi under Apache
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
;fastcgi.impersonate = 1;
; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
;fastcgi.logging = 0
; cgi.rfc2616_headers configuration option tells PHP what type of headers to
; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
; is supported by Apache. When this option is set to 1 PHP will send
; RFC2616 compliant header.
; Default is zero.
; http://php.net/cgi.rfc2616-headers
;cgi.rfc2616_headers = 0
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = on
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 128M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen = On
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include = Off
; Define the anonymous ftp password (your email address). PHP's default setting
; for this is empty.
; http://php.net/from
;from="john@doe.com"
; Define the User-Agent string. PHP's default setting for this is empty.
; http://php.net/user-agent
;user_agent="PHP"
; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
default_socket_timeout = 60
; If your scripts have to deal with files from Macintosh systems,
; or you are running on a Mac and need to deal with files from
; unix or win32 systems, setting this flag will cause PHP to
; automatically detect the EOL character in those files so that
; fgets() and file() will work regardless of the source of the file.
; http://php.net/auto-detect-line-endings
;auto_detect_line_endings = Off
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
;
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
;
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
; http://php.net/date.default-latitude
;date.default_latitude = 31.7667
; http://php.net/date.default-longitude
;date.default_longitude = 35.2333
; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333
; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333
[filter]
; http://php.net/filter.default
;filter.default = unsafe_raw
; http://php.net/filter.default-flags
;filter.default_flags =
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
[intl]
;intl.default_locale =
; This directive allows you to produce PHP errors when some error
; happens within intl functions. The value is the level of the error produced.
; Default is 0, which does not produce any errors.
;intl.error_level = E_WARNING
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0
[sqlite3]
;sqlite3.extension_dir =
[Pcre]
;PCRE library backtracking limit.
; http://php.net/pcre.backtrack-limit
;pcre.backtrack_limit=100000
;PCRE library recursion limit.
;Please note that if you set this value to a high number you may consume all
;the available process stack and eventually crash PHP (due to reaching the
;stack size limit imposed by the Operating System).
; http://php.net/pcre.recursion-limit
;pcre.recursion_limit=100000
[Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; http://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict
;pdo_odbc.db2_instance_name
[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size = 2000
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=
[Phar]
; http://php.net/phar.readonly
;phar.readonly = On
; http://php.net/phar.require-hash
;phar.require_hash = On
;phar.cache_list =
[Syslog]
; Whether or not to define the various syslog variables (e.g. $LOG_PID,
; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
; runtime, you can define these variables by calling define_syslog_variables().
; http://php.net/define-syslog-variables
define_syslog_variables = Off
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On
; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =
[SQL]
; http://php.net/sql.safe-mode
sql.safe_mode = Off
[ODBC]
; http://php.net/odbc.default-db
;odbc.default_db = Not yet implemented
; http://php.net/odbc.default-user
;odbc.default_user = Not yet implemented
; http://php.net/odbc.default-pw
;odbc.default_pw = Not yet implemented
; Controls the ODBC cursor model.
; Default: SQL_CURSOR_STATIC (default).
;odbc.default_cursortype
; Allow or prevent persistent links.
; http://php.net/odbc.allow-persistent
odbc.allow_persistent = On
; Check that a connection is still valid before reuse.
; http://php.net/odbc.check-persistent
odbc.check_persistent = On
; Maximum number of persistent links. -1 means no limit.
; http://php.net/odbc.max-persistent
odbc.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
; http://php.net/odbc.max-links
odbc.max_links = -1
; Handling of LONG fields. Returns number of bytes to variables. 0 means
; passthru.
; http://php.net/odbc.defaultlrl
odbc.defaultlrl = 4096
; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
; of odbc.defaultlrl and odbc.defaultbinmode
; http://php.net/odbc.defaultbinmode
odbc.defaultbinmode = 1
;birdstep.max_links = -1
[Interbase]
; Allow or prevent persistent links.
ibase.allow_persistent = 1
; Maximum number of persistent links. -1 means no limit.
ibase.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
ibase.max_links = -1
; Default database name for ibase_connect().
;ibase.default_db =
; Default username for ibase_connect().
;ibase.default_user =
; Default password for ibase_connect().
;ibase.default_password =
; Default charset for ibase_connect().
;ibase.default_charset =
; Default timestamp format.
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
; Default date format.
ibase.dateformat = "%Y-%m-%d"
; Default time format.
ibase.timeformat = "%H:%M:%S"
[MySQL]
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysql.allow_local_infile
mysql.allow_local_infile = On
; Allow or prevent persistent links.
; http://php.net/mysql.allow-persistent
mysql.allow_persistent = On
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/mysql.cache_size
mysql.cache_size = 2000
; Maximum number of persistent links. -1 means no limit.
; http://php.net/mysql.max-persistent
mysql.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
; http://php.net/mysql.max-links
mysql.max_links = -1
; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
; http://php.net/mysql.default-port
mysql.default_port =
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =
; Default host for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysql.default-host
mysql.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysql.default-user
mysql.default_user =
; Default password for mysql_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well.
; http://php.net/mysql.default-password
mysql.default_password =
; Maximum time (in seconds) for connect timeout. -1 means no limit
; http://php.net/mysql.connect-timeout
mysql.connect_timeout = 60
; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
; SQL-Errors will be displayed.
; http://php.net/mysql.trace-mode
mysql.trace_mode = Off
[MySQLi]
; Maximum number of persistent links. -1 means no limit.
; http://php.net/mysqli.max-persistent
mysqli.max_persistent = -1
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysqli.allow_local_infile
;mysqli.allow_local_infile = On
; Allow or prevent persistent links.
; http://php.net/mysqli.allow-persistent
mysqli.allow_persistent = On
; Maximum number of links. -1 means no limit.
; http://php.net/mysqli.max-links
mysqli.max_links = -1
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/mysqli.cache_size
mysqli.cache_size = 2000
; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
; http://php.net/mysqli.default-port
mysqli.default_port = 3306
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket =
; Default host for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysqli.default-host
mysqli.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysqli.default-user
mysqli.default_user =
; Default password for mysqli_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well.
; http://php.net/mysqli.default-pw
mysqli.default_pw =
; Allow or prevent reconnect
mysqli.reconnect = Off
[mysqlnd]
; Enable / Disable collection of general statstics by mysqlnd which can be
; used to tune and monitor MySQL operations.
; http://php.net/mysqlnd.collect_statistics
mysqlnd.collect_statistics = On
; Enable / Disable collection of memory usage statstics by mysqlnd which can be
; used to tune and monitor MySQL operations.
; http://php.net/mysqlnd.collect_memory_statistics
mysqlnd.collect_memory_statistics = Off
; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
; http://php.net/mysqlnd.net_cmd_buffer_size
;mysqlnd.net_cmd_buffer_size = 2048
; Size of a pre-allocated buffer used for reading data sent by the server in
; bytes.
; http://php.net/mysqlnd.net_read_buffer_size
;mysqlnd.net_read_buffer_size = 32768
[OCI8]
; Connection: Enables privileged connections using external
; credentials (OCI_SYSOPER, OCI_SYSDBA)
; http://php.net/oci8.privileged-connect
;oci8.privileged_connect = Off
; Connection: The maximum number of persistent OCI8 connections per
; process. Using -1 means no limit.
; http://php.net/oci8.max-persistent
;oci8.max_persistent = -1
; Connection: The maximum number of seconds a process is allowed to
; maintain an idle persistent connection. Using -1 means idle
; persistent connections will be maintained forever.
; http://php.net/oci8.persistent-timeout
;oci8.persistent_timeout = -1
; Connection: The number of seconds that must pass before issuing a
; ping during oci_pconnect() to check the connection validity. When
; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
; pings completely.
; http://php.net/oci8.ping-interval
;oci8.ping_interval = 60
; Connection: Set this to a user chosen connection class to be used
; for all pooled server requests with Oracle 11g Database Resident
; Connection Pooling (DRCP). To use DRCP, this value should be set to
; the same string for all web servers running the same application,
; the database pool must be configured, and the connection string must
; specify to use a pooled server.
;oci8.connection_class =
; High Availability: Using On lets PHP receive Fast Application
; Notification (FAN) events generated when a database node fails. The
; database must also be configured to post FAN events.
;oci8.events = Off
; Tuning: This option enables statement caching, and specifies how
; many statements to cache. Using 0 disables statement caching.
; http://php.net/oci8.statement-cache-size
;oci8.statement_cache_size = 20
; Tuning: Enables statement prefetching and sets the default number of
; rows that will be fetched automatically after statement execution.
; http://php.net/oci8.default-prefetch
;oci8.default_prefetch = 100
; Compatibility. Using On means oci_close() will not close
; oci_connect() and oci_new_connect() connections.
; http://php.net/oci8.old-oci-close-semantics
;oci8.old_oci_close_semantics = Off
[PostgresSQL]
; Allow or prevent persistent links.
; http://php.net/pgsql.allow-persistent
pgsql.allow_persistent = On
; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads.
; http://php.net/pgsql.auto-reset-persistent
pgsql.auto_reset_persistent = Off
; Maximum number of persistent links. -1 means no limit.
; http://php.net/pgsql.max-persistent
pgsql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no limit.
; http://php.net/pgsql.max-links
pgsql.max_links = -1
; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads.
; http://php.net/pgsql.ignore-notice
pgsql.ignore_notice = 0
; Log PostgreSQL backends Noitce message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message.
; http://php.net/pgsql.log-notice
pgsql.log_notice = 0
[Sybase-CT]
; Allow or prevent persistent links.
; http://php.net/sybct.allow-persistent
sybct.allow_persistent = On
; Maximum number of persistent links. -1 means no limit.
; http://php.net/sybct.max-persistent
sybct.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
; http://php.net/sybct.max-links
sybct.max_links = -1
; Minimum server message severity to display.
; http://php.net/sybct.min-server-severity
sybct.min_server_severity = 10
; Minimum client message severity to display.
; http://php.net/sybct.min-client-severity
sybct.min_client_severity = 10
; Set per-context timeout
; http://php.net/sybct.timeout
;sybct.timeout=
;sybct.packet_size
; The maximum time in seconds to wait for a connection attempt to succeed before returning failure.
; Default: one minute
;sybct.login_timeout=
; The name of the host you claim to be connecting from, for display by sp_who.
; Default: none
;sybct.hostname=
; Allows you to define how often deadlocks are to be retried. -1 means "forever".
; Default: 0
;sybct.deadlock_retry_count=
[bcmath]
; Number of decimal digits for all bcmath functions.
; http://php.net/bcmath.scale
bcmath.scale = 0
[browscap]
; http://php.net/browscap
;browscap = extra/browscap.ini
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
;session.save_path = "/tmp"
; Whether to use cookies.
; http://php.net/session.use-cookies
session.use_cookies = 1
; http://php.net/session.cookie-secure
;session.cookie_secure =
; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combatting
; session hijacking when not specifying and managing your own session id. It is
; not the end all be all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1
; Name of the session (used as cookie name).
; http://php.net/session.name
session.name = PHPSESSID
; Initialize session on request startup.
; http://php.net/session.auto-start
session.auto_start = 0
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
; The path for which the cookie is valid.
; http://php.net/session.cookie-path
session.cookie_path = /
; The domain for which the cookie is valid.
; http://php.net/session.cookie-domain
session.cookie_domain =
; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly =
; Handler used to serialize data. php is the standard serializer of PHP.
; http://php.net/session.serialize-handler
session.serialize_handler = php
; Defines the probability that the 'garbage collection' process is started
; on every session initialization. The probability is calculated by using
; gc_probability/gc_divisor. Where session.gc_probability is the numerator
; and gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request.
; Default Value: 1
; Development Value: 1
; Production Value: 1
; http://php.net/session.gc-probability
session.gc_probability = 1
; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using the following equation:
; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
; session.gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request. Increasing this value to 1000 will give you
; a 0.1% chance the gc will run on any give request. For high volume production servers,
; this is a more efficient approach.
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; http://php.net/session.gc-divisor
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm
; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, even when register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled. This feature
; introduces some serious security problems if not handled correctly. It's
; recommended that you do not use this feature on production servers. But you
; should enable this on development servers and enable the warning as well. If you
; do not enable the feature on development servers, you won't be warned when it's
; used and debugging errors caused by this can be difficult to track down.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-42
session.bug_compat_42 = Off
; This setting controls whether or not you are warned by PHP when initializing a
; session value into the global space. session.bug_compat_42 must be enabled before
; these warnings can be issued by PHP. See the directive above for more information.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-warn
session.bug_compat_warn = Off
; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
; http://php.net/session.referer-check
session.referer_check =
; How many bytes to read from the file.
; http://php.net/session.entropy-length
session.entropy_length = 0
; Specified here to create the session id.
; http://php.net/session.entropy-file
;session.entropy_file = /dev/urandom
session.entropy_file =
; http://php.net/session.entropy-length
;session.entropy_length = 16
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; http://php.net/session.cache-limiter
session.cache_limiter = nocache
; Document expires after n minutes.
; http://php.net/session.cache-expire
session.cache_expire = 180
; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
; http://php.net/session.use-trans-sid
session.use_trans_sid = 0
; Select a hash function for use in generating session ids.
; Possible Values
; 0 (MD5 128 bits)
; 1 (SHA-1 160 bits)
; This option may also be set to the name of any hash function supported by
; the hash extension. A list of available hashes is returned by the hash_alogs()
; function.
; http://php.net/session.hash-function
session.hash_function = 0
; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
; 4 (4 bits: 0-9, a-f)
; 5 (5 bits: 0-9, a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.hash_bits_per_character = 5
; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; http://php.net/url-rewriter.tags
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
; Allow or prevent persistent links.
mssql.allow_persistent = On
; Maximum number of persistent links. -1 means no limit.
mssql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no limit.
mssql.max_links = -1
; Minimum error severity to display.
mssql.min_error_severity = 10
; Minimum message severity to display.
mssql.min_message_severity = 10
; Compatibility mode with old versions of PHP 3.0.
mssql.compatability_mode = Off
; Connect timeout
;mssql.connect_timeout = 5
; Query timeout
;mssql.timeout = 60
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 4096
; Limits the number of records in each batch. 0 = all records in one batch.
;mssql.batchsize = 0
; Specify how datetime and datetim4 columns are returned
; On => Returns data converted to SQL server settings
; Off => Returns values as YYYY-MM-DD hh:mm:ss
;mssql.datetimeconvert = On
; Use NT authentication when connecting to the server
mssql.secure_connection = Off
; Specify max number of processes. -1 = library default
; msdlib defaults to 25
; FreeTDS defaults to 4096
;mssql.max_procs = -1
; Specify client character set.
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS
;mssql.charset = "ISO-8859-1"
[Assertion]
; Assert(expr); active by default.
; http://php.net/assert.active
;assert.active = On
; Issue a PHP warning for each failed assertion.
; http://php.net/assert.warning
;assert.warning = On
; Don't bail out by default.
; http://php.net/assert.bail
;assert.bail = Off
; User-function to be called if an assertion fails.
; http://php.net/assert.callback
;assert.callback = 0
; Eval the expression with current error_reporting(). Set to true if you want
; error_reporting(0) around the eval().
; http://php.net/assert.quiet-eval
;assert.quiet_eval = 0
[COM]
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
; http://php.net/com.typelib-file
;com.typelib_file =
; allow Distributed-COM calls
; http://php.net/com.allow-dcom
;com.allow_dcom = true
; autoregister constants of a components typlib on com_load()
; http://php.net/com.autoregister-typelib
;com.autoregister_typelib = true
; register constants casesensitive
; http://php.net/com.autoregister-casesensitive
;com.autoregister_casesensitive = false
; show warnings on duplicate constant registrations
; http://php.net/com.autoregister-verbose
;com.autoregister_verbose = true
; The default character set code-page to use when passing strings to and from COM objects.
; Default: system ANSI code page
;com.code_page=
[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
;mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
;mbstring.internal_encoding = EUC-JP
; http input encoding.
; http://php.net/mbstring.http-input
;mbstring.http_input = auto
; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
;mbstring.http_output = SJIS
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off
; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
;mbstring.substitute_character = none;
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
;mbstring.func_overload = 0
; enable strict encoding detection.
;mbstring.strict_detection = Off
; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetype=
; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte
; Default: ""
;mbstring.script_encoding=
[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 0
[exif]
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
; http://php.net/exif.decode-unicode-motorola
;exif.decode_unicode_motorola = UCS-2BE
; http://php.net/exif.decode-unicode-intel
;exif.decode_unicode_intel = UCS-2LE
; http://php.net/exif.encode-jis
;exif.encode_jis =
; http://php.net/exif.decode-jis-motorola
;exif.decode_jis_motorola = JIS
; http://php.net/exif.decode-jis-intel
;exif.decode_jis_intel = JIS
[Tidy]
; The path to a default tidy configuration file to use when using tidy
; http://php.net/tidy.default-config
;tidy.default_config = /usr/local/lib/php/default.tcfg
; Should tidy clean and repair output automatically?
; WARNING: Do not use this option if you are generating non-html content
; such as dynamic images
; http://php.net/tidy.clean-output
tidy.clean_output = Off
[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
; http://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir="/tmp"
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
; http://php.net/soap.wsdl-cache-ttl
soap.wsdl_cache_ttl=86400
; Sets the size of the cache limit. (Max. number of WSDL files to cache)
soap.wsdl_cache_limit = 5
[sysvshm]
; A default size of the shared memory segment
;sysvshm.init_mem = 10000
[ldap]
; Sets the maximum number of open links or -1 for unlimited.
ldap.max_links = -1
[mcrypt]
; For more information about mcrypt settings see http://php.net/mcrypt-module-open
; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=
; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=
[dba]
;dba.default_handler=
; Local Variables:
; tab-width: 4
; End:

Exemple de my.cnf pour Magento 1.6 / 1.7 & 1.8

### LE 26/11/2013
### /etc/mysql/my.cnf   pour Magento sur serveur dédié Ubuntu + Plesk 11.5 

 [client]
 port = 3306
 socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# This was formally known as [safe_mysqld]. 
 [mysqld_safe]
 socket = /var/run/mysqld/mysqld.sock
 nice = 0
[mysqld]
 local-infile=0
 # * IMPORTANT
 # adjust /etc/apparmor.d/usr.sbin.mysqld.

user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp

###########################################################################
##### POUR AUTORISER L ACCES A LA BASE MYSQL DEPUIS UN AUTRE SERVEUR  #####
###########################################################################
# 1)
###### Cette ligne empèche l'accès a la Base Mysql depuis un autre serveur
###### Mettre un "#" devant = #skip-external-locking #pour autoriser l acces 
skip-external-locking
# 2)
######## d'origine pour LOCALHOST = bind-address = 127.0.0.1
########  NE FONCTIONNE PAS AVEC IP FAILOVER
######## bind-address = 127.0.0.1 
######## *** REMPLACE PAR L ADRESSE DU SERVEUR bind-address = 176.31.***.***
bind-address = 127.0.0.1
###########################################################################
#
# * Fine Tuning
#
# eric --- original etait a  16M
 key_buffer = 32M
# eric --- original etait a  16M
 max_allowed_packet = 32M
 thread_stack = 192K
 thread_cache_size = 8
 # This replaces the startup script and checks MyISAM tables if needed
 # the first time they are touched
 myisam-recover = BACKUP
 #max_connections = 100
 #table_cache = 64
 #thread_concurrency = 10
 #
 # * Query Cache Configuration
 #
 # eric --- original etait   1M
 query_cache_limit = 2M
 # eric --- original etait   16M
 query_cache_size = 64M
 #
####### Ajouter ###################################
 table_cache = 1024
 # 2x le nombre de cores CPU innodb_thread_concurrency = 8
 innodb_thread_concurrency = 8
 innodb_flush_log_at_trx_commit = 0 #(safe vs speed, 0 speed, 1 safe, 2 mixed)
 innodb_log_buffer_size = 32M
# 66% de la mémoire disponible # (3 Go sur un serveur web 8 Go de RAM )

# ceci est important trop de mémoire innodb_buffer peut generer une erreur Magento
# EXEMPLE.. SQLSTATE[4200]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB'
# (1024M sur un site web 4 Go de RAM)

 innodb_buffer_pool_size = 4096M
 innodb_additional_mem_pool_size = 32M
 ######## fin de l'ajout ###############################
################################################
 # * Logging and Replication
 #
 # Both location gets rotated by the cronjob.
 # Be aware that this log type is a performance killer.
 # As of 5.1 you can enable the log at runtime!
 #general_log_file = /var/log/mysql/mysql.log
 #general_log = 1
log_error = /var/log/mysql/error.log
# Here you can see queries with especially long duration
 #log_slow_queries = /var/log/mysql/mysql-slow.log
 #long_query_time = 2
 #log-queries-not-using-indexes
 #
 # The following can be used as easy to replay backup logs or for replication.
 # note: if you are setting up a replication slave, see README.Debian about
 # other settings you may need to change.
 #server-id = 1
 #log_bin = /var/log/mysql/mysql-bin.log
 expire_logs_days = 10
 max_binlog_size = 100M
 #binlog_do_db = include_database_name
 #binlog_ignore_db = include_database_name
 #
 # * InnoDB
 #
 # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
 # Read the manual for more InnoDB related options. There are many!
 #
 # * Security Features
 #
 # Read the manual, too, if you want chroot!
 # chroot = /var/lib/mysql/
 #
 # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
 #
 # ssl-ca=/etc/mysql/cacert.pem
 # ssl-cert=/etc/mysql/server-cert.pem
 # ssl-key=/etc/mysql/server-key.pem
[mysqldump]
 quick
 quote-names
 max_allowed_packet = 32M
[mysql]
 #no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
 key_buffer = 32M
#
 # * IMPORTANT: Additional settings that can override those from this file!
 # The files must end with '.cnf', otherwise they'll be ignored.
 #
 !includedir /etc/mysql/conf.d/

Exemple de .htaccess Magento 1.6 / 1.7 & 1.8

### HTACCESS du dossier Magento ### ERIC LE 26 11 2013 Serveur dédier 
RewriteBase /VotreDossierMagento/

#si vous avez plusieurs domaines
#### site1.fr #####
SetEnvIf Host www site1.fr MAGE_RUN_CODE=default
#SetEnvIf Host www. site1.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin
SetEnvIf Host ^site1.fr MAGE_RUN_CODE=default
#SetEnvIf Host ^site1.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin

#### site2.fr ######
SetEnvIf Host www. site2.fr MAGE_RUN_CODE=NomduMagasinDansMagento
#SetEnvIf Host www. site2.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin
SetEnvIf Host ^ site2.fr MAGE_RUN_CODE=NomDuMagasinDansMagento
#SetEnvIf Host ^ site2.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin

#ajout par eric pour l'extension d'acceleration fooman-speedster
RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2


##### ajout eric ##### bug  apache2 s auto-sature voir log ######
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
#RewriteRule .* \u2013 [F,L]

############################################
## uncomment these lines for CGI mode
## make sure to specify the correct cgi php binary file name
## it might be /cgi-bin/php-cgi
# Action php5-cgi /cgi-bin/php5-cgi
# AddHandler php5-cgi .php
############################################
## GoDaddy specific options
# Options -MultiViews
## you might also need to add this line to php.ini
## cgi.fix_pathinfo = 1
## if it still doesn't work, rename php.ini to php5.ini
############################################
## this line is specific for 1and1 hosting
#AddType x-mapp-php5 .php
 #AddHandler x-mapp-php5 .php
############################################
## default index file
DirectoryIndex index.php
<IfModule mod_php5.c>
############################################
## adjust memory limit
# php_value memory_limit 64M
 php_value memory_limit 128M
 php_value max_execution_time 18000
############################################
## disable magic quotes for php request vars
php_flag magic_quotes_gpc off
############################################
## disable automatic session start
## before autoload was initialized
php_flag session.auto_start off
############################################
## enable resulting html compression
#php_flag zlib.output_compression on
###########################################
# disable user agent verification to not break multiple image upload
php_flag suhosin.session.cryptua off
###########################################
# turn off compatibility with PHP4 when dealing with objects
php_flag zend.ze1_compatibility_mode Off
</IfModule>
<IfModule mod_security.c>
###########################################
# disable POST processing to not break multiple image upload
SecFilterEngine Off
 SecFilterScanPOST Off
</IfModule>
<IfModule mod_deflate.c>
############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
 ###SetOutputFilter DEFLATE
 # Insert filter on selected content types only
 #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems...
 #BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
 #BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
 #BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
 #SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
 #Header append Vary User-Agent env=!dont-vary
</IfModule>
<IfModule mod_ssl.c>
############################################
## make HTTPS env vars available for CGI mode
SSLOptions StdEnvVars
</IfModule>
<IfModule mod_rewrite.c>
############################################
## enable rewrites
Options +FollowSymLinks
 RewriteEngine on
############################################
## you can put here your magento root folder
## path relative to web root
RewriteBase /shop/

#ajout par eric pour l'extension d'acceleration fooman-speedster
RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2

############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
</IfModule>

############################################
## Prevent character encoding issues from server overrides
## If you still have problems, use the second line instead
AddDefaultCharset Off
 #AddDefaultCharset UTF-8
<IfModule mod_expires.c>
############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires
ExpiresDefault "access plus 1 year"
</IfModule>
############################################
## By default allow all access
Order allow,deny
 Allow from all
###########################################
## Deny access to release notes to prevent disclosure of the installed Magento version
<Files RELEASE_NOTES.txt>
 order allow,deny
 deny from all
 </Files>
############################################
## If running in cluster environment, uncomment this
## http://developer.yahoo.com/performance/rules.html#etags
#FileETag none

Erreur Mysql : /var/run/mysqld/mysqld.sock (solution avec mysqld_safe)

Après quelques manipulations j’ai planté Mon Mysql.

Mon site sous Magento ne pouvait plus fonctionner.

le message d’erreur était : /var/run/mysqld/mysqld.sock Manquant.

 

J’ai donc lancer sous Putty ou dans un terminal (linux)

mysqld_safe

est tout est rentré dans l’ordre.

source : http://dev.mysql.com/doc/refman/5.5/en/mysqld-safe.html

 

 

 

 

 

 

 

 

 

 

1and1 100Go! 1&1 illimité! le pire de l’hébergement internet!

Un petit coup de gueule,  car il n’est pas normal de se faire plumer de la sorte !

j’ai habitude de travailler avec les Hébergeurs, 1and1, Ovh, amen.., c’est tout naturellement que j’ai pris leur Offre Hébergement Illimités 1&1 1and1 .

Hébergement illimité : 6 mois offert , prix alléchant.. 30 jours satisfait ou remboursé, pas* astérisque sur les offres, rien en bas de page, le marketing de 1and1 est très fort !

PIRE OFFRE D’HERBERGEMENT INTERNET !!!

D’illimité, en réalité ont à droit à 75% de 30Go soit 22,5Go !!!!   Pourquoi ils ne disent pas 22,5Go ? Je ne sais pas, chez 1and1 le support dit « 75% de 30Go » !

+1Go par jour en cas de saturation, qui redescend lorsqu’on ne sature plus, bref c’est totalement inexploitable !!!

Je m’explique : je suis en limite de 22,5Go, j’ai besoin de copier un Fichier de 4Go,

je dois attendre 4 jours ? et bien non car vu que je ne sature plus le lendemain, oui j’ai eu 1go de + ça remonte plus !!!

Donc je ne pourrais jamais mettre mon fichier de 4Go sur un Hébergement illimité !!

si je fais  le vide, et bien ça redescend !!

Bref inexploitable . 

Satisfait ou remboursé 30 jours ??? FAUX , pourtant écrit en bas de la page d’acceuil de 1and !

Conditions générales de vente articles 5.2, 6.7 et 6.8 : -La garantie « satisfait ou remboursé » ne s’applique pas aux contrats soumis à un engagement de durée !!

Le pire du pire,  au téléphone ils ‘m’ont dit qu’il allait voir ce qu’ils peuvent faire d’attendre 48H, pour me confirmer 2 jours après ! non ils ne peuvent rien faire pour moi.

Cette attente de 48H m’empêche de me rétracter dans les 7 jours au lieu de 30 annoncés !!!

Prenez les offres concurrentes :

Je viens de téléphoner a OVH à 4.99€ j’ai 100Go réels . pas un octet de moins pas un octet de +, sans demander quoi que ce soit. : http://www.ovh.com/fr/hebergement_mutualise/

je viens de téléphoner à amen.fr eux aussi m’ont confirmé que l’hébergement vendu correspond bien a la capacité réelle disponible immédiatement. soit 100Go pour 6€ 1To pour 12€. http://www.amen.fr/web-hosting/hosting-premium.html

1&1 c’est de l’arnaque… j’en ai pour 1 an … parfait pour perdre mon l’argent.

Ps :TAG : 1&1, AVIS, COMPARAISON, VS, NUL, 1AND1, MAUVAIS, HEBERGEMENT, ILLIMITE. ARNAQUE

ATTENTION : c’est exactement pareil pour l’offre 1and1 de 100Go, qui en réalité de 22,5Go ! !

Guide du designer Magento en français

Source : Version original : http://www.magentocommerce.com/wiki/groups/140/guide_du_designer_en_francais

 

Guide du designer Magento en français

Merci à alphanono pour la traduction.

Version anglaise du guide (la plus à jour).

Mise en garde

Attention, ce document est dépassé avec la version actuelle de Magento. Le concept a évolué avec un nouveau niveau de gestion mais le principe reste le même. Le concept lors de la rédaction de cette page était : Sites Web → Boutiques Actuellement, le concept ressemble à ceci : Sites Web → Boutiques → Vue Boutiques.

Le Site Web peut contenir plusieurs boutiques qui elles-mêmes peuvent contenir plusieurs Vues Boutiques qui consistent généralement en des versions de langues différentes.

Introduction

Vous avez entendu parler des fonctionnalités open-source incroyables intégrées dans Magento. Vous êtes impatient de voir tout cela en action et vous voulez en faire le tour rapidement.

… et maintenant, vous souhaitez faire de cette boutique la vôtre. Vos PSD sont prêts et vous êtes motivé pour les intégrer. Alors ensuite … Par quoi commencer ?

Le guide du designer pour Magento a été réalisé pour que vous puissiez apprendre et étendre vos connaissances sur la structure, les concepts et les méthodes pour faire du design sous Magento – Ca tutoriel vous apprendra ce que vous devez savoir pour commencer à réaliser votre propre thème sous Magento. Ceci dit, étant donné les possibilités d’extensions et le niveau de flexibilité offerts par Magento, il n’est pas possible de documenter toute les façons qui vous permettront de le personnaliser. Pour obtenir de l’aide à ce propos, vous pouvez consulter les forums (français ou anglais) de la communauté et le wiki où des personnes avec de l’expérience pourront vous guider dans la bonne voie rapidement. Aussi, rappelez-vous que Magento est une application en perpétuel développement, et c’est pourquoi ce guide ne sera peut-être pas exactement adapté à la version de Magento que vous utilisez. attendre l’information que vous cherchez. Cependant étant donné que chaque chapitre est un prélude pour le suivant, nous vous recommandons de suivre la documentation dans l’ordre qu’elle a été rédigée.

Chapitre 1 – Terminologie du design sous Magento

Avant de parcourir la documentation, il est crucial que vous ayez une bonne compréhension des termes utilisés pour décrire les aspects du système de Magento. Les termes abordés dans ce chapitre ne vous sont pas familier pour la plus-part, alors prenez le temps de les étudier méticuleusement. Mais plus important, ne vous découragez pas si vous n’arrivez pas à comprendre complètement le concept de tous ces nouveaux termes – Ce chapitre veut simplement tous vous les présenter d’un coup, mais dans les chapitres suivants, nous entrerons plus en détails dans leur signification que ces simples définitions. Les termes couverts dans ce chapitre sont :

  • Site Web et Boutique (eng:Website and Store)
  • Interface
  • Thèmes
    • Layouts
    • Templates
    • Skins
  • Blocs
    • Blocs Structurels
    • Blocs de Contenu

Site Web et Boutique

Un site web est un ensemble de boutiques qui partagent les mêmes clients, commandes et également les paniers. C’est un terme très générique qui peut être utilisé pour définir les besoins uniques de chaque marchant. Voici quelques scenarios pour définir les différentes utilisations d’un site web :

Scénario 1

Une entreprise nommée Dubloo Inc se crée une présence Internet avec 3 boutiques de vêtement séparées qui s’occupent chacune d’une cible de consommateurs différente suivant leurs tarifs. Dubloo Inc veut avoir la possibilité pour ces trois boutiques de partager les comptes clients et les commandes. Dans ce scénario, Dubloo Inc voudrait avoir un Site Web et trois Boutiques sous leur même domaine. Boutique désignera les différentes boutiques pour chaque gamme de tarif, et Site Web sera l’élément qui englobe/regroupe ces boutiques.

Scénario 2

Une entreprise nommée My Laptops voudrait ouvrir deux Sites Web qui vendront chacun des pc portables mais à des tarifs différents. Ils veulent en plus proposer des options de langues en English et Spanish pour chaque Site Web, chacune proposant ses propres produits en fonction de la langue sélectionnée. Ils auront aussi besoin de synchroniser les clients et les commandes par site. Dans un tel scénario, Boutique définira chaque English et Spanish ramification sous leur Site Web respectif. Un Site Web définira “My Laptops” et “Cheap Laptops”.

Scénario 3

Une entreprise appelée Bongo’s Instruments veut se créer une présence sur Internet. Avec aucune ramification de Boutique, Bongo’s Instruments est à la fois la Boutique et le Site Web.

Interface

Interface est une collection de thèmes qui déterminent le rendu visuel et les fonctionnalités du frontend de votre boutique. Une interface peut être assignée à l’un ou l’autre des niveaux de Sites Web, niveaux de Boutiques ou au niveau du Site Web et de la Boutique à travers l’interface d’administration. (Découvrez comment assigner une Interface à un Site Web/Boutique).

Si vous assignez une interface à un niveau de Site Web, toutes vos boutiques hériteront de l’Interface de votre Site Web. Vous pourrez ensuite assigner une Interface au niveau de la Boutique qui prendra le dessus sur celle du Site Web. Imaginons que vous travaillez sur 4 différentes Boutiques sous un Site Web commun appelé “John’s Panacea” – En examinant les effets de chaque méthode comme expliqué avant, vous pouvez facilement déterminer la méthode à employer pour personnaliser chacune de vos Boutiques en fonction de ses besoins.

Déclaration au niveau du Site Web

Si vous voulez créer un style uniforme pour toutes vos Boutiques, vous pouvez assigner une Interface au niveau du Site Web. Vos boutiques hériteront alors de l’Interface du Site Web principal.

Déclaration au niveau de la Boutique

Si vous voulez définir un style particulier pour chaque Boutique, vous pouvez leur assigner à chacune une Interface ; auquel cas chacune des boutiques possédera sa propre identité.

Thèmes

Un thème est une combinaison de Layouts, de Templates et/ou de Skins qui gèrent l’ergonomie de votre Boutique. Magento a été conçu avec la capacité de charger plusieurs thèmes à la fois, et doit par conséquent considérer les thèmes dans 2 catégories :

Le Thème par défaut

Chaque Interface doit posséder un Thème nommé ‘default’ qui est le Thème principal de l’Interface. Quand vous assignez une Interface à votre Boutique, l’application cherche automatiquement le Thème ‘default’ et le charge sur le frontend. Si vous voulez personnaliser le design de votre Boutique, vous pouvez simplement modifier ce Thème, ou créer un Thème supplémentaire et le charger par dessus le Thème par default. Le Thème par défaut doit contenir toutes les Layouts, les Templates et les Skins requis pour que la Boutique s’exécute sans erreur. Il est le Thème de base, au premier niveau de la hiérarchie des Thèmes.

Les Thèmes qui ne sont pas par défaut

Les autres Thèmes peuvent contenir uniquement les fichiers qui changent de votre Thème par défaut ou redéfinir tous les fichiers selon votre besoin. Ce genre de Thème vise par exemple à définir un style graphique différent pour votre Boutique suivant les saisons sans avoir à recréer un Thème complet par ‘default’. – En créant uniquement quelques images et en mettant à jour le CSS, vous pouvez facilement adapter votre boutique standard en boutique festive pour Noël.

Un Thème est constitué par l’une ou toutes ces choses :

  • Layout (situé dans app/design/frontend/votre_interface/votre_theme/layout/). Ce sont des fichiers XML basics qui déterminent les structures des blocs pour les différentes pages mais qui contrôlent également les META informations et l’encodage des pages. For in-depth look into layouts, read Intro to Layouts) (Pour enter plus en profondeur dans le concept de Layout, vous pouvez lire Introduction aux Layout (plans))
  • Templates (situé dans app/design/frontend/votre_interface/votre_theme/template/). Ce sont des fichiers PHTML qui contiennent des balises (X)HTML et le code PHP nécessaire pour gérer l’affichage des informations.
  • Skins (located in skin/frontend/votre_interface/votre_theme/). Ce sont des ensembles de Javascript, CSS et fichiers images qui complètent votre (X)HTML.

Blocks

Diagram 1. Blocks Structurels (Indiqués en bleu) Diagram 1. Blocks Structurels (Indiqués en bleu)

Diagram 2. Blocks de Contenu (Indiqués en orange) Diagram 2. Blocks de Contenu (Indiqués en orange)

Les Blocks sont une façon par laquelle Magento distingue les ensembles de fonctionnalité dans le système et crée un module pour les gérer visuellement et fonctionnellement. Il y a deux type de Blocks et ils travaillent ensemble pour gérer le rendu visuel.

  • Blocks de Structure : Ce sont des Blocks créés dans le seul but de gérer une structure visuelle d’une page de la Boutique comme : header, left column, main column and footer (Diagram 1).
  • Blocks de Contenu : Ce sont des Blocks qui produisent le contenu à l’intérieur de chaque Block de Structure. Ils sont la représentation de chaque fonctionnalité dans une page et utilisent des fichiers de template pour générer le code (X)HTML qui doit être inséré dans le Block de Structure parent. Category list, mini cart, product tags et product listing…etc sobnt tous des Blocks de Contenu de leur parent (Diagram 2).

Au lieu d’insérer les templates les uns à la suite des autres comme dans les applications d’eCommerce typiques pour obtenir la totalité de la sortie (X)HTML, Magento rassemble et arrange le contenu des pages par l’intermédiaire des Blocks.

C’est à peu prêt tout pour ce qui est des termes ! – Dans le prochain chapitre, on se familiarisera un peu plus avec les Thèmes sous Magento.

Chapitre 2 – Travailler avec les thèmes sous Magento

Dans ce chapitre, nous allons rentrer dans les détails sur comment Magento manipule les Thèmes et vous apprendre à créer et gérer votre propre Thème :

  • En quoi la gestion des Thèmes sous Magento est-elle différente des autres
  • Comment créer un Thème
  • Comment assigner un Thème et une Interface à une Boutique
  • Découvrez les Thèmes multiples
  • Hiérarchie des Thèmes : Comment Magento gère les Thèmes multiples

En quoi la gestion des Thèmes sous Magento est-elle différente des autres

Le terme Thème vous est certainement familier. Vous avez déjà, en tant qu’utilisateur ou créateur, expérimenté les possibilités offertes à une application web par ses Thèmes. Un Thème a deux grands types d’utilisateurs – Premièrement, le type utilisateur qui l’expérimente à travers l’esthétique et l’ergonomie d’une boutique en navigant dans celle-ci – et deuxièmement, le type créateur qui va rentrer dans une autre dimension du Thème en prenant part à sa réalisation.

Pour le premier type d’utilisateurs, la découverte d’une boutique est définie par sa capacité à répondre à ses besoins fonctionnels et émotionnels. Pour le deuxième type d’utilisateur qui doit tenir le rôle de créateur, c’est l’efficacité avec laquelle il va pouvoir compléter les développements qui détermine son impression de la Boutique. Nous avons reconnu que ce sont les ressentis de ces deux types d’utilisateur qui déterminent la rentabilité finale de la Boutique, par conséquent aucun de ces ressentis ne peut être ignoré.

Parceque nous savons qu’en tant que Designer vous avez déjà réalisé la charte graphique des principaux éléments de votre boutique, nous supposons que nous aurons juste à vous aider en réalisant une gestion incroyables des Thèmes pour optimiser votre flux de travail efficacement et booster votre créativité. Voici plusieurs choses qui, nous le pensons, vont vous ravir :

  1. Une puissance de personnalisation maximum. Avec Magento, vous pouvez personnaliser l’esthétique et l’ergonomie de votre Boutique au niveau de chaque Catégorie et Produit, vous donnant un pouvoir marketing extraordinaire. N’avez-vous jamais imaginé pouvoir présenter chaque produit dans un univers qui lui est propre ? Magento vous donne la possibilité de le faire et bien plus encore, en fournissant des méthodes rapides de personnalisation de la présentation de vos produits sur la base d’une gestion par produit ou par catégorie.
  2. Thèmes multiples. Magento vous donne la possibilité de charger plusieurs Thèmes à la fois, vous permettant ainsi de choisir entre un Thème par défaut et un Thème spécifique à une saison, un événement, …
  3. Flux de travail ininterrompu. Avec la programmation pleinement orientée objet de Magento, tous les modules sont immédiatement accessibles par les tags de Templates de chaque fichier de Template. Et parce que Magento est livré avec une tonne de fonctionnalités, vous ne serez plus dépendant d’un programmeur pour terminer de développer les fonctionnalités basiques de votre Boutique. Magento s’appuie également sur un vaste réseau de membres de la communauté bien informés (y compris l’équipe officielle de Magento), vous n’aurez donc pas à réfléchir à deux fois où obtenir des conseils si vous en avez besoin.
  4. Réduisez au minimum le temps de correction. Chaque concepteur peut se rappeler toutes ces précieuses heures et minutes passées à chercher la balise qui n’a pas été fermée. Le validateur vous dit que quelque chose ne vas pas, mais jamais où se situe ce problème. Le système modulaire de backend de Magento apporte avec lui un système de Template modulaire qui réduit la quantité de (X)HTML que vous devez manipuler à la fois. Moins de désordre signifie moins de problèmes et plus de tranquillité d’esprit pour les choses vraiment importantes.

Le véritable atout qui vous est offert par Magento, c’est une application forte de sa flexibilité, vous permettant de vous concentrer un maximum sur les prochains front-end d’exception que vous développerez. Il n’y aucune limite avec cette application, et nous espérons que vous prendrez du plaisir à l’utiliser pour votre boutique.

Comment créer un Thème

Commençons par dévoiler quelques dossiers importants. Ouvrez les dossiers suivant à la racine de Magento et soyons curieux :

  • Dossier 1 : app/design/frontend/default/default/ – Ce dossier contient les Layout, les traductions (locale) et les Templates.
  • Dossier 2 : skin/frontend/default/default/ – Ce dossier contient les images, CSS et blocs de Javascript spécifiques.

Quand vous travaillez avec les Thèmes, ces deux dossiers seront toujours votre point de départ. Comme vous avez pu le remarquer, nous avons séparé les fichiers de Thème en deux parties. En séparant les fichiers qui doivent être accessibles depuis le web (comme les images ou le javascript), de ceux qui doivent être cachés, nous nous sommes assurés que Magento vous offre des mesures de sécurité maximales pour votre boutique à tout point.

Avançons et examinons ces deux dossiers. Tout d’abord, nous remarquons l’utilisation des noms de dossier “default/default” dans les dossiers 1 et 2 comme ceci :

  • Dossier 1 : app/design/frontend/default/default/
  • Dossier 2 : skin/frontend/default/default/

Dans les 2 cas, * indique le nom de l’Interface, et * indique le nom de Thème. Donc si vous êtes en train de travailler sur un Thème nommé “my_theme” dans une Interface nommée “my_interface”, vous devriez travailler dans le dossier ‘app/design/frontend/my_interface/my_theme/’.

Créer un nouveau Thème par défaut

Afin de créer un nouveau Thème par défaut, vous devez d’abord copier un Thème par défaut existant sur lequel vous pourrez baser votre nouveau Thème. Créez une copie de app/design/frontend/default/default/ et renommez par ce que vous voulez (Les noms d’une Interface et d’un Thème devraient être composé uniquement de caractère alphanumériques et commencez par une lettre de l’alphabet [a-z]. Par exemple, ‘Mon nouveau Thème’ et ‘02123_mon_them’ ne sont pas bons. ‘mon_nouveau_theme’ est bon). Le nom du dossier de votre Thème est le nom par lequel l’application reconnaîtra votre Thème. Maintenant, faites la même chose pour skin/frontend/default/default. Et c’est tout ! Vous avez maintenant créé avec succès un nouveau Thème par défaut. Pour apprendre comment assigner ce Thème à votre boutique, lisez Assignez un nouveau Thème.

Créer une nouveau Thème qui n’est pas par défaut

Quand vous créez un nouveau Thème autre que par défaut, vous n’avez pas besoin de dupliquer tous les dossiers contenus dans le Thème par défaut. Vous n’aurez probablement que quelques changements à effectuer sur certains fichiers spécifiques, donc vous n’aurez qu’a dupliquer ces fichiers comme point de départ de votre nouveau Thème. Cependant, il y a une règle que vous devrez toujours suivre, c’est de garder la structure conventionnelle de Magento pour l’organisation de vos sous-dossiers. Par exemple, si tout ce que contient votre Thème complémentaire est le fichier de template ‘home.phtml’ du module de catalogue, dans app/design/frontend/your_interface/your_non_default_theme/ vous aurez besoin de créer les dossiers ‘template/catalog’ dans lequel vous sauvegarderez le fichier de template.

Diagram 1

Quand vous développez l’arborescence d’un Thème par défaut de Magento (Diagram 1), vous pouvez voir comment les dossiers sont structurés – Soyez certains de conserver cette convention de structure dans vos nouveaux Thèmes pour que tout se passe bien.

Assigner une Interface et un Thème à une boutique

Maintenant que vous avez créé votre propre Thème (que ce soit un Thème par défaut ou non), vous devez l’assigner à un site web ou une boutique ou une vue boutique pour qu’il prenne effet. Naviguez dans le panneau d’administration (ex www.mydomain.com/admin), puis sur l’onglet Design (System → Configuration → Design tab).

Diagram 2

Dans le coin supérieur de la colonne de gauche (Diagram 2), vous voyez un encart appelé ‘Current Configuration Scope’ (Fr:→Champ de la configuration courante).

  • Pour gérer le design de votre boutique au niveau du site web, sélectionnez le nom de votre site Web dans la liste déroulante puis réalisez les opérations suivantes.
  • Pour gérer le design de votre boutique au niveau de la Boutique, sélectionnez le nom de votre boutique dans la liste déroulante puis réalisez les opérations suivantes.

Étape 1 Depuis l’onglet Design, dans Nom du paquet courant, entrez le nom de l’Interface dans laquelle se situe votre nouveau Thème. Magento chargera automatiquement l’Interface nommée ‘default’ si ce champ n’est pas renseigné.

Étape 2 Dans Défaut (dans la rubrique Thèmes), entrez le nom du nouveau Thème que vous voulez charger par défaut. Si vous laissez ce champ vide, Magento chargera automatiquement et uniquement le Thème nommé ‘defaut’ (Rappelez-vous, quelque soit la façon dont vous configure le design, Magento chargera automatiquement le Thème nommé ‘default’. Si vous assignez un Thème dans l’admin, ce Thème sera simplement chargé au dessus du Thème par défaut.) Si vous avez besoin de charger des Thèmes différents suivant le type de fichier (Layout, Templates, Skins or Translation files), entrez le nom du Thème relatif à chacune de ces parties.

Étape 3 Une fois fait, cliquez sur le bouton Save config” et rechargez votre boutique – Voilà ! Vous voyez maintenant le nouveau Thème affiché sur le front-end.

Maintenant que vous savez comment créer et gérer des Thèmes, voyons maintenant comment Magento manipule ces Thèmes.

Découvrez les Thèmes Multiples

Les saisons de vacances offrent de loin la possibilité commerciale la plus étendue pour n’importe quel magasin d’eCommerce – Les clients font la queue pour acheter les cadeaux de Noël pour leur famille et leurs amis, et les mamans attendent de pouvoir acheter les costumes d’Halloween pour leurs enfants. Afin d’attirer les clients saisonniers, votre boutique doit refléter l’ambiance du moment pour inciter vos clients à visiter votre magasin. Un magasin comme celui du Diagram 3 ne serait pas intéressant en période de Noël – Ce qu’il a besoin, c’est juste d’un peu de rouge, quelques flocons et un Père-Noël – exactement comme la boutique du Diagram 4 !

Diagram 3. La boutique de base Diagram 3. La boutique de base

Diagram 4. Ce que vous souhaitez Diagram 4. Ce que vous souhaitez

Avec Magento, nous avons créé la capacité pour votre boutique de manipuler plusieurs Thèmes de votre choix en fonction des occasions. En chargeant plusieurs Thèmes sur votre Boutique, vous préservez votre Thème classique et lui ajoutez les spécificités de votre Thème de Noël.

En observant les deux designs ci-dessus, vous remarquez les similitudes dans l’organisation générale du design. Le style est devenu celui de Noël dans le Diagram 4, mais en dessous vous pouvez voir la structure du design classique de la boutique. La seule réelle différence entre ces deux design de boutique repose sur quelques CSS, fichiers images et mots qui changent dans le fichier de Template. Comme les changements sont minimes, vous n’avez pas besoin d’un nouveau Thème par défaut complet pour votre style Noël. Ce dont vous avez besoin, c’est juste quelques remplacements de fichiers, et vous aurez alors un magasin plus joyeux et plus adapté à sa cible. Les fonctionnalités de Thèmes multiples sous Magento ont été créé pour personnaliser votre boutique exactement comme vous le désirez, tout en préservant le Thème de base. Vous pourrez alors en quelques clics rappeler le Thème de base ou un de ses Thèmes dérivés en fonction de vos envies.

Le principe de chargement de Thèmes multiples repose sur un principe de Hiérarchie. Seuls les fichiers présents dans un point plus haut de la Hiérarchie écrasent les fichiers de base. C’est vous qui déterminez la hiérarchie dans le panneau de configuration du design dans l’admin.

Hiérarchie des Thèmes

Quand vous assignez plusieurs Thèmes à votre boutique, vous tirez profit essentiellement du fait que votre but principal quand vous réalisez une boutique est de créer une interface la plus ergonomique et la plus esthétique possible, le rôle de Magento étant de s’assurer que l’application est capable de trouver tous les fichiers du Thème requis pour préserver une exécution sans erreur.

Par exemple, si votre page de listing de la catégorie appel un template fichier de template nommé ‘view.phtml’ (auquel cas ce fichier devient un fichier requis), mais que l’application n’est pas capable de trouver le fichier dans le Thème le plus haut de la Hiérarchie, elle cherchera dans le Thème juste en dessous dans la Hiérarchie pour essayer de trouver le fichier. Si elle échoue, elle continuera à descendre dans la hiérarchie des Thèmes jusqu’à ce qu’elle puisse trouver le fichier nommé ‘view.phtml’, elle l’affichera alors dans la boutique et arrêtera là la recherche. Cette méthode de gestion du design est appelée fallbacks, parceque l’application ‘se rabat sur’ la possibilité suivante de trouver la source jusqu’à ce qu’elle y arrive et la charge.

Disons que vous avez 3 Thèmes assignés à votre boutique et chacun de ces Thèmes contient les fichiers suivant :

Table 1

default my_theme_1 my_theme_2
All required files templates/3-col-layout.phtml templates/3-col-ayout.phtml
templates/header.phtml css/base.css
images/logo.gif
css/base.css
css/boxes.css

Supposont également que les 3 Thèmes sont organisés hiérarchiquement de cette façon :

Table 2

HIGHEST my_theme_2
my_theme_1
LOWEST default

À première vue, vous remarquez qu’il y a plusieurs fichiers redondants comme templates/3-col-layout.phtml et css/base.css dans Table 1. Arrangeons mes pour qu’ils soient affichés les uns en face des autres.

Table 3

default my_theme_1 my_theme_2
All required files
templates/3-col-layout.phtml templates/3-col-layout.phtml
templates/header.phtml
images/logo.gif
css/base.css css/base.css
css/boxes.css

Ok, bien. Mais qu’est ce que cela signifie ? vous demandez vous. Et bien, laissez nous vous rappeler que les fichiers dans la Table 3 sont comme vous les voyez dans chaque Thème et non comme Magent les voit.

Regardez maintenant comment Magento voit ces même fichiers dans la structure de la Table 4.

Table 4

default my_theme_1 my_theme_2
All required files
templates/3-col-layout.phtml
templates/header.phtml
images/logo.gif
css/base.css
css/boxes.css

Vous remarquerez que Magento ignore les versions des fichiers redondants dans les parties plus basses de la hiérarchie et ne reconnait que les versions les plus hautes. C’est pour ça qu’il trouve toujours les fichiers requis et n’a pas besoin de les chercher plus longtemps.

Dans ce chapitre, vous avez appris comment les Thèmes sont créés et gérés. Dans le chapitre suivant, nous vous montrerons étape par étape comment construire votre Thème. Vous découvrirez les Layouts, Templates et Skins – Soyez sûr d’avoir déjà lu le chapitre Terminologie du design sous Magento avant d’accéder au chapitre suivant.

Chapitre 3 – Construire votre propre thème

Magento est conçu sur une base totalement modulaire, ce qui donnera à votre boutique des facultés d’extensibilité et de flexibilité illimitées. A TRADUIRE → “By nature of the application, this approach to programming is mirrored in the way you will develop themes for your store.” In this chapter, we will explore what that means for you and exactly how to go about developing a theme for your store with Magento. Dans ce chapitre, nous découvrirons ce que cela signifie pour vous et comment développer un thème pour votre boutique avec Magento.

Introduction aux Blocks et Layout

Vous avez très probablement travaillé avec d’autres applications d’eCommerce avant d’arriver à Magento – avec une telle expérience, nous savons que vous avez probablement développé quelques habitudes pour ce qui est de développer des thèmes pour votre boutique. Avant de lire cette doc, nous ne pouvons que vous conseiller d’oublier toutes vos anciennes façons de faire. Tout ce que cela signifie, c’est qu’il y a quelques nouveautés que vous devez apprendre et avec elles, les nouveaux outils que nous souhaiterions vous faire découvrir. Familiarisez-vous avec ces outils, gardez les sous la main en permanence et assurez-vous de leur porter toute votre attention – Faites tout cela, et nous vous promettons “you will love yourself for it”. Etes-vous prêt ? Les voici :

  1. Blocks structurels
  2. Blocks de contenu
  3. Layout

Représentation schématique

Pour vous donner une compréhension claire de ce que sont les Blocks et les Layouts, voici un schéma que vous pourrez dessinez pour vous-même :

  1. Imaginez les arrêtes d’un Block vide (diagram 1 – Nous ne ferrons pas référence au diagram à chaque fois.)
  2. Maintenant, imaginez les arrête d’un Block contenant un Block.
  3. Maintenant imaginez deux Blocks et les arrêtes qui englobent ces deux Blocks.
  4. Maintenant imaginez 3 Blocks et les arrêtes qui les englobent tous les 3.
  5. Maintenant imaginez 4 Blocks et les arrêtes les englobant.
  6. Maintenant, regardez cette capture de la page de catégories dans Magento :
  7. Et maintenant regardez ces captures avec la décomposition en deux types :

Le schéma que vous venez juste de créer sert à faire un parallèle entre le concept et l’organisation actuelle des Blocks. Je pense que vous être probablement perdus. Laissez-moi vous expliquer.

Dans le schéma, les arrêtes dans le diagram 2 sont les Blocks structurels. Ce sont les Blocks parents des Blocks de contenu et dans la réalité, servent à positionner ces Blocks de contenu à l’intérieur d’une page de la boutique (comme dans le diagram 3). Ces Blocks de structure prennent la forme de la zone d’en-tête, la zone de la colonne à gauche, la colonne de droite, … qui servent à créer la structure visuelle d’une page.

Un Block de contenu quant à lui, dans le schéma, est un Block coloré individuel qui compose un Block structurel. Dans le contexte d’une boutique, ils sont le contenu réel de la page. They are representations of each functionalities featured in a page (such as category list, callout and product tags…etc.), Ils sont la représentation de chaque fonctionnalité dans la page (comme : category list, callout and product tags…etc.), et utilisent des fichiers de template pour générer le (X)HTML à insérer dans leur Block structurel parent.

Layout est l’outil avec lequel vous pouvez assigner les Blocks de contenu à chaque Block structurel que vous créez. Les Layouts existent sous la forme de fichier texte XML et en les modifiants, vous serez capable de bouger les Blocks sur la page et assigner des Templates aux Blocks de contenu pour produire le code des Blocks structurels. En fait, grâce à seulement quelques fichiers Layouts, vous êtes capable de modifier le rendu visuel de chacune des pages de votre boutique. Apprenez-en plus à propos des Layouts dans Introduction aux Layout.

Avec Magento, vous n’aurez plus besoin de fichier de template nommé colonne_gauche.ext et tout son code spaghetti qui doit être géré manuellement en fonction de chaque fonction présente sur la page. Au lieu de ça, vos templates sont gérés par de simples fonctions et vous pouvez charger ou non ces fonctions dans la page de votre boutique grâce à l’utilisation seule des Layouts.

Guide de création d’un Thème pas à pas

Voici la liste complète de ce que Magento vous propose pour générer vos Thèmes :

  1. Templates
  2. Layouts
  3. Blocks
  4. Skins (images, CSS et Javascript)

Dans le but de créer un thème pour voter boutique, votre méthodologie devrait ressembler pas à pas à ceci :

UN : Désactivez le système de cache

Pour préparer Magento aux travaux, vous devez d’abord désactiver le système de cache en allant dans l’admin (http://yourhost.com/admin) et en navigant vers System → Cache Management. Sélectionnez “désactivé” dans “All Cache” et cliquez sur “Sauvegarder les paramètres du cache”. En faisant ça, vous vous assurez de voir en temps réel les véritables modifications que vous opérez sur la boutique.

DEUX : Déterminez toutes les possibilités de type de structure pour votre boutique

Avant de commencer à créer le code de la boutique, vous devez d’abord vous demander quels types de structures de pages vous aimeriez avoir pour chacune des pages de votre boutique. Faites-vous une liste qui ressemble grossièrement à ceci :

  • La page d’accueil utilisera la structure en 3 colonnes
  • Les pages de listing de catégorie utiliseront la structure en deux colonnes avec une colonne à droite
  • La page de compte client utilisera la structure en deux colonnes avec une colonne à gauche
Template « squelette »

Une fois votre liste complète, vous pouvez créer les balises (X)HTML de chaque type de structure et les sauver en temps que Template “squelette” dans app/design/frontend/your_interface/your_theme/template/page/. Un Template “squelette” est appelé ainsi du fait de la nature de son contenu – tout ce qu’il contient réellement (à part pour les éléments de la balise <head>), sont les balises de présentation qui servent à positionner chaque Block structurel dans les emplacements prévus.

Exemple de Template “squelette”

En observant l’exemple ci-dessous, vous remarquez que des fonctions PHP sont appelées <?=$this→getChildHtml()?> dans chaque balise de présentation. C’est la façon dont Magento charge les Blocks structurels dans les Template “squelette” et est ainsi capable de positionner tout le contenu des Blocks structurels sur une page de la boutique.

Chaque getChildHtml appelle un nom comme

  1. <div class= »header »><?=$this->getChildHtml(‘header’)?></div>

et ces noms représentent le Block structurel identifié dans le Layout. Les Templates “squelette” sont assignés à la boutique à travers les Layouts.

TROIS : Découpez vos (X)HTML en fonction des fonctionnalités

Une fois que vous avez créé vos Templates “squelette”, vous aurez maintenant besoin de créer des Templates pour chaque Block de contenu.

A TRADUIRE : « Magento likes meaningful templates »

Vous aurez besoin de découper le code (X)HTML de vos pages et fournir le code nécessaire à chaque fonctionnalité de la page. Par exemple, si vous avez une zone de mini-panier dans votre design, le code de cette zone aura sont propre fichier de Template. De même pour les tags produits, la souscription à la newsletter, … Toutes ces fonctionnalités sont déjà incluses dans Magento, donc vous pourrez vous baser sur le code des Templates actuels pour créer le vôtre.

Où sauvegarder les Templates ?

Diagram 5 Diagram 5

Le code complet de chaque page de la boutique est composé d’un ensemble de Templates qui représentent chacun une fonctionnalité ou un module. Pour trouver quel Template est appelé dans une page que vous souhaitez modifier, vous pouvez activer “Astuce chemin des gabarits”. Pour le rendre actif :

  1. Allez dans l’administration et naviguer jusqu’à Système → Configuration
  2. Sélectionnez votre boutique en haut à gauche
  3. Quand la page est rechargée, sélectionnez Développeur à gauche et choisissez “oui” pour “Astuce chemin des gabarits”

Une fois fait, retournez sur le frontend de votre boutique, rechargez la page et vous verrez apparaître le chemin des Templates de chaque Block. Pour modifier le code, tout ce que vous avez à faire est de suivre le lien désigné et le modifier à votre convenance.

QUATRE: Changer les Layouts pour qu’ils correspondent à votre design

Une fois que vous aurez modifié quelques morceaux de code, vous aurez probablement envie de savoir comment bouger les Templates dans une page.

Où trouver les Layouts

Pour accéder aux fichiers de Layout, allez à app/design/frontend/your_interface/your_theme/layout/. Tout comme les Templates, les Layouts sont sauvegardés dans des dossiers par module. Par conséquent, vous pouvez appliquer la même logique pour localiser les fichiers à modifier. ( Exemple: si vous êtes dans une page de produit ou de catégorie, vous travaillerez dans catalog.xml. Si vous êtes dans une page de validation, vous travaillerez dans checkout.xml. Si vous êtes dans une page de login utilisateur, vous travaillerez dans customer.xml) A TRADUIRE : “Each layout file(should it be necessary) further sections into per-page basis layout command.” Chaque zone de Layout par page est clairement identifiée par des commentaires, mais l’application elle-même reconnait la séparation des Layouts par les manipulateurs de chaque Layout.

Layout par défaut contre update des Layout

Il y a deux type de Layout – par défaut et mis à jour. Un Layout par défaut (page.xml) est le Layout qui s’applique de lui-même à toutes les pages de la boutique. Tous les autres fichiers de Layout sont des mises à jour de Layout qui mettent à jour simplement les layouts de la page par défaut.

Prenons en exemple votre Template “Squelette” : Dans le Layout par défaut, vous l’avez défini sur 3 colonnes, ce qui signifie que par défaut, la plupart des pages de votre boutique auront une structure 3 colonnes par défaut. Mais vous ne voulez pas de cette structure 3 colonnes pour les pages de produits. Pour cela, vous souhaitez plutôt utiliser une structure à 2 colonnes avec une colonne sur la droite. Pour réaliser cela, ne touchez pas au Layout par défaut et ouvrez catalog.xml dans lequel vous placerez quelques commandes de Layout qui demanderont à l’application de charger la structure 2 colonnes pour la page de produits au lieu de celle à 3 colonnes par défaut. Ceci est appelé le procédé de mis à jour des Layouts.

Exemple d’assignation d’un Template “Squelette”:

  1. <reference name= »root »>
  2. <action method= »setTemplate »>
  3. <template>page/2columns-right.phtml</template>
  4. </action>
  5. </reference>

Prenons un autre exemple : Disons que par défaut vous voulez une case à cocher pour souscrire à la newsletter mais que vous ne la voulez pas sur la page de compte utilisateur. Dans ce cas, ne touchez pas au Layout par défaut et ouvrez customer.xml, dans lequel vous placerez une commande qui désactivera le Block de contenu de la newsletter, excluant les fonctionnalités de la newsletter pour cette page.

Dans ce chapitre, nous avons vu en détail comment modifier un Thème. Dans le chapitre suivant, nous rentrerons en détail sur comment modifier les Layouts.

===== Chapitre 4 – Introduction aux Layouts =====. A première vue, vous aurez besoin d’un solide bagage en programmation pour modifier les pages de Layout. C’est pourtant assez simple. Un Layout est construit sur la base de quelques balises XML qui sont rapides et faciles à apprendre. En apprenant quelques concepts clefs et commandes d’un Layout, vous serez rapidement opérationnel pour modifier en toute confiance le design de votre boutique.

  • Comment fonctionnent les Layouts
  • Anatomie d’un Layout
  • Règles du XML
  • Exercices rapides pour vous rendre opérationnel

Comment fonctionnent les Layouts

Un Layout est un composant virtuel de l’application Magento. En modifiant les composants du Layout, vous pouvez construire votre page dans une optique de maintenance facilitée.

Diagram 1

Un Layout est la somme d’un Layout par défaut et de Layout de mise à jour qui sont composés de tags XML simples. Avec ces commandes de Layout, vous pouvez modifier/assigner des Blocks de contenu, les relations de Blocks structurels et aussi contrôler les fonctionnalités du front-end en chargeant ou non des blocks spécifiques de Javascript dans une page.

Les fichiers de Layout sont organisés dans une arborescence par module, chaque module disposant de sont propre fichier de Layout (par exemple, “catalogue.xml” est un fichier de Layout pour le module catalogue, “customer.xml” est pour le module utilisateurs, …). Ces fichiers de Layout sont localisés dans app/design/frontend/your_interface/your_theme/layout/ et chaque fichier et découpé par des identifiants (handles) (voir diagram 1), chaque Handle (à l’exception de <default>) définissant ses propres directives à la page liée de la boutique.

Quelques fichiers de Layout peuvent contenir le Handle <default>. Quand il analyse les fichiers de Layout, Magento saisit d’abord les directives du Layout assignées dans l’identifiant <default> pour tous les fichiers de Layout, en les lisant suivant l’ordre défini dans app/etc/modules/Mage_All.xml. Il analyse ensuite les directives spécifiques à la page pour finaliser la construction de la page.

Le système a été construit dans l’optique de permettre des ajout et de suppression de modules sans affecter les autres modules du système.

Anatomie d’un Layout

Un Layout contient un petit ensemble de balises XML qui donnent des instructions détaillées à l’application sur comment construire la page, que construire avec et le comportement de chaque block. La meilleure façon de découvrir les Layouts est de s’y attaquer directement. Afin que vous puissiez commencer cela, voici quelques propriétés comportementales de chaque balise XML de Layout.

Handle

Un Handle (diagram 1) est un identifiant par lequel l’application détermine quoi faire avec les directives qu’il comporte.

Si le nom du Handle est <default>, alors l’application sait que ces prochaines directives devront être chargées sur presque toutes les pages de la boutique avant de charger les Layouts spécifiques à chaque page (Nous disons ‘presque toutes’ car il y a certaine exceptions comme la page de popup pour les zoom d’image produit qui ne chargent pas le Handle <default>).

Si Magento trouve des Handles autres que <default>, il assignera les directives contenues dans ce Handle à la page spécifiée par le Handle. Par exemple, <catalog_product_view> contient les directives de Layout pour la page de Visualisation Produit, alors que <catalog_product_compare_index> contient celles de la page de comparaison des produits. Les Handles sont des identifiants fixes qui ne doivent jamais être changés.

<block>

Magento détermine le comportement et la représentation visuelle de chaque module d’une page par l’intermédiaire de la balise <block>. Nous avons déjà mentionné les 2 types de Blocks que Magento utilise – Blocks structurels et Blocks de contenu. La meilleure façon de distinguer les deux et d’examiner le comportement qui leur est assigné par les attributs des balises. Un Block structurel contient habituellement l’attribut ‘as’, à travers lequel l’application est capable de communiquer avec les zones désignées (par la fonction getChildHtml) dans un Template. Vous pourrez remarquer plusieurs occurences de l’attribut ‘as’ dans le Layout par défaut, parceque par nature, le Layout par défaut est celui qui construit la base sur laquelle les Layouts spécifiques aux pages vont pouvoir se greffer. Par exemple, dans le Layout par défaut, il y a des Blocks de structure comme ‘left’, ‘right’, ‘content’ et ‘footer’ qui sont définis. Cela ne veut pas dire que ces Blocks ne peuvent pas exister dans les directives de Layout normales, mais pourquoi pas d’abord les définir dans le Layout par défaut, puis commencer à ajouter le contenu dans les Layouts spécifiques aux pages ? Avançons dans notre découvert des attributs disponibles pour les <block>.

  • type – C’est l’identifiant de la class du module qui défini les fonctionnalités du Block. Cet attribut ne doit pas être modifié.
  • name – C’est le nom par lequel les autres Blocks peuvent faire référence au Block dans lequel cet attribut est assigné (voir Diagram 3).
  • before (et) after – Il y a deux façon de positionner un Block de contenu dans un Block struturel. before=”-” et after=”-” sont les commandes utilisées pour positionner les Block au tout début ou à la fin d’un Block structurel.
  • template – Cet attribut détermine le Template qui représente les fonctionnalités du Block dans lequel les attributs sont assignés. Par exemple, si cet attribut est assigné catalog/category/view.phtml’, l’application chargera le fichier de Template ‘app/design/frontend/template/catalog/category/view.phtml‘. Pour apprendre comment les Layouts travaillent avec les Templates pour apporter un gros plus à votre boutique, lisez Construire votre propre thème
  • action – <action> sert à contrôler les fonctionnalités du front-end comme le chargement ou non d’un Javascript. Une liste complète des méthodes d’action sera bientôt disponible, mais la meilleure façon d’apprendre ces différentes méthodes d’action reste encore de jouer avec dans les directives de Layout disponibles actuellement.
  • as – C’est le nom par lequel un Template appel le Block dans lequel cette attribut est assigné. Quand vous voyez la fonction PHP getChildHtml(’block_name’) appelée depuis un Template, vous pouvez être sûr qu’elle fait référence au Block dont l’attribut ‘as’ a reçu le nom ‘block_name’. (exemple: la méthode <?=$this→getChildHtml(’header’)?> dans une Template “Squelette” fait référence à <block as=“header”> )
<reference>

<reference> est utilisé pour faire référence à un autre Block. En faisant référence à un autre Block, les directives dans <reference> seront appliquée au <block> auquel il fait référence (voir diagram 3).

Diagram 3

Pour faire une référence, vous devez cibler la référence par un Block en utilisant l’attribut ‘name’. Cet attribut cible l’attribut ‘name’ de la balise <block>. Donc si vous voulez faire une référence par <reference name=”right”>, vous ciblerez le Block nommé <block name=”right”>.

Règles du XML

Si vous n’êtes pas familier avec l’XML, en rencontrant les directives de Layout pour Magento basées sur du XML, vous aurez certainement quelques questions à propos des règles que vous devrez suivre en modifiant ces fichiers XML. Le seul ensemble de règles que vous devez connaître pour ce qui est du XML, est que quand une balise est ouverte, elle doit être obligatoirement suivie par une balise de fermeture (<xml_tag></xml_tag>) ou une fermeture directe (<xml_tag/>) exactement comme devraient l’êtres les balises d’un fichier (X)HTML.

Diagram 4

Exercices rapides pour vous rendre opérationnel

Comme pour tout nouveau concept, nous savons que sans mettre les mains dedans, vous ne pourrez jamais vraiment saisir tout ce qui a été expliqué avec des mots. Donc voici quelques exercices pour que vous vous sentiez plus à l’aise en travaillant avec les Layouts. Pour réaliser ces exercices, vous devez avoir le Thème par défaut de Magento prêt et accessible.

Exercice #1: Dans le page de catégorie, déplacez la zone « My cart » de la colonne de droite à celle de gauche

  1. Activez “Astuce chemin des gabarits” en allant dans l’admin puis Système → Configuration. Quand vous êtes sur la page de configuration, sélectionnez la boutique sur laquelle vous travaillez en haut à gauche. Attendez que la page se recharge, puis sélectionnez la rubrique Développeur. Choisissez “oui” dans le champ pour “Astuce chemin des gabarits”. Cliquez sur sauvegarder. Retournez sur le front de la boutique, et rechargez.
  2. Quand la page se recharge, regardez le chemin de Template du Block ‘My Cart’ – il indiquera très probablement ‘frontend/default/default/template/checkout/cart/sidebar.phtml’. En regardant le chemin, vous savez que ce Template est introduit par le module ‘checkout’. Comment est-ce que vous le savez ? – frontend/default/default/template/checkout/cart/sidebar.phtml. Le chemin de Template est ainsi indiqué. Le nom de dossier qui suit immédiatement ‘template’ est le nom du module à travers lequel un Template est introduit.
  3. Ouvrez layout/checkout.xml – parceque maintenant nous savons où faire les modifs pour le module ‘checkout’.
  4. Chercher ‘checkout/cart/sidebar.phtml’ (le nom du Template du Block ‘My Cart’) dans les directives du Layout. Vous trouverrez une zone qui ressemble à ceci :

    1. <reference name= »right »>
    2. <block type= »checkout/cart_sidebar » name= »cart_sidebar » before= »- » template= »checkout/cart/sidebar.phtml »/>
    3. </reference>

    Changer par ce qui suit (Notez que tout ce que vous faites, c’est changer <reference name=”right”> par <reference name=”left”>).

  5. Rechargez le front de la boutique et vous verrez maintenant le changement s’opérer.

Exercice #2: Séparer les liens SEO dans la zone de pied – Au lieu d’avoir les liens dans une seule liste, isolez ‘Advanced Search’ pour qu’il passe dans la zone de tête.

  1. Vous pouvez déjà vous douter que les liens SEO doivent être assignés quelque part dans le Layout sous le Block ‘footer’ parcequ’il est appelé à travers ‘<?=$this→getChildHtml()?>’ de template/page/html/footer.phtml.
  2. Ouvrez layout/page.xml et regardez à travers la liste d’enfants sous le Block ‘footer’ pour localiser un Block qui appellerait les liens de pied – Vous trouverez <block name=”footer_links”>, qui est ce qui appel les liens SEO. Maintenant que vous savez que la directive du Layout fait référence aux liens SEO par name=”footer_links”, vous devez maintenant faire une recherche dans tous les fichiers XML pour trouver <reference name=”footer_links”>. Vous trouverez les références pour le Block footer_links dans catalog.xml (lequel appelle ‘Site Map’), catalogsearch.xml (qui appelle ‘Search Terms’ et ‘Advanced Search’) et contacts.xml (qui appelle ‘Contact Us’).
  3. Maintenant que vous avez identifié la zone des items individuels de lien SEO, vous allez maintenant pouvoir commencer l’étape d’isolation de ‘Advanced Search’ du groupe et le faire devenir un élément à part entière dans le header. D’abord retournez sur page.xml et créez un nouveau Block <block type=”core/template_links” name=”header_links” as=”header_links” template=”page/html/links.phtml”/> que vous insérez à l’intérieur de <block name=”header”>. Vous avez fait en sorte que les directives du Layout attendent ce lien dans header.phtml. Ouvrez template/page/html/header.phtml, et entrez <?=$this→getChildHtml(’header_links’)?> où vous voulez que le lien apparaisse.
  4. Maintenant, allez dans catalogsearch.xml, et coupez ceci :

    1. <action method= »addLink » translate= »label title » module= »catalogsearch »>
    2. <label>Advanced Search</label>
    3. <url helper= »catalogsearch/getAdvancedSearchUrl » />
    4. <title>Advanced Search</title>
    5. </action>

    dans <reference name=”footer_links”>. Créez de nouvelles lignes pour faire référence au nouveau Block header_links que vous avez créé, et insérez le code à l’intérieur comme ceci :

    1. <reference name= »header_links »>
    2. <action method= »addLink » translate= »label title » module= »catalogsearch »>
    3. <label>Advanced Search</label>
    4. <url helper= »catalogsearch/getAdvancedSearchUrl » />
    5. <title>Advanced Search</title>
    6. </action>
    7. </reference>
  5. Maintenant, vous avez le lien vers la recherche avancée dans l’entête au lieu du pied.

Ceci marque la fin du guide du design pour Magento. Nous espérons que vous avez maintenant les connaissances nécessaires sur le fonctionnement du design sous Magento. Ce serait sympa de nous faire profiter de vos travaux en nous donnant vos liens dans le forum. Partagez avec nous vos designs, échangez à propos de cette documentation et posez toutes vos questions sur les forums de la communauté en français ou anglais.

Bug install Thème Hellowired . « Manque de Bouton Valider la commande »

Après avoir installé le magnifique thème

En suivant les instructions pas à pas  voir ici : http://www.hellothemes.com/support/documentation/hellowired-documentation/

Je me suis aperçu qu’il etait impossible de Valider une commande ! Et pour cause le bouton « Valider la commande » avait disparu !!

En cherchant sur le Net je trouve pas mal de monde avec me même problème.  Je soupçonne Hello de laiser ce bug histoire de vendre des installation de thème ?

Pour corriger ce Bug

il faut récupéré le fichier checkout.xml pour le mettre dans le thème Hello

Remplacez le fichier checkout.xml dans:

app / design / frontend / default / hellowired / layout / checkout.xml

avec celui du thème par défaut moderne ici: 

app/design/frontend/base/default/layout/checkout.xml

Puis vider la cche .. c’est terminée 🙂

Editeur de fichiers (XML, HTML, PHP …) directement dans Magento !

vous devez modifier un fichier html, php, ou XLM de Magento. Vous n’avez pas envie à chaque fois de le télécharger en FTP.

Cette extension est idéal : http://www.magentocommerce.com/magento-connect/file-system.html
http://connect20.magentocommerce.com/community/File_System

 

_______________________________________

Mais attention,  vous avez accès à tous les fichiers, donc la moindre erreur et vous plantez votre Magento.

 

Quelques sites de thèmes et d’extensions Magento.

Les extensions Officielles de Magento : http://www.magentocommerce.com/magento-connect/catalogsearch/result/?id=&s=1&pl=1&te=0&q=&pr=&t=1&p=1

Français, La maison du Logiciel : http://www.boostmyshop.com/default/

ahaeadWorks : http://ecommerce.aheadworks.com/

Mage World : http://www.mage-world.com/    bonne extension, très bon éditeur de Layout, free Gif, etc..

IceBerg Commerce : http://icebergcommerce.com/

Magexx : http://www.mageex.com/

AyaSofware : http://www.ayasoftware.com/

Mage World : http://www.mage-world.com/

EcommerceTeam :  http://ecommerce-team.com/magento-design/

Xogenics : http://www.xogenics.com/xogenics/index.php/

Megaparts :  http://www.mageparts.com/products/commercial.html

Gala themes : http://galathemes.com/magento-themes/gala-gearbox.html

Extremes Themes : http://www.emthemes.com/

Template Master : http://www.templatemonster.com/magento-themes.php

WebExperiment : http://web-experiment.info/magento-extensions

Themes et extensions : http://www.rockettheme.com/magento

Extension : http://amasty.com/

 

Themes : http://www.magento-templates.com/free-magento-templates/

Magento Mise à jour de la TVA à tous les produits existant

Vous importez des produits dans Magento, vous cherchez une solution pour appliquer la TVA par défaut à tous les produits existant.

Merci à maverick193 pour son petit Script en PHP

Commencez par créer ta classe de TVA, Récupèrez en suite son id sur la fiche produit (Onglet ‘Price’, le champ ‘Tax Class’ à l’aide de ton firebug par exemple).
Créer ensuite un fichier php à la racine de ton magento et tu y met le code suivant :

 
 <?php
error_reporting(E_ALL);
 ini_set('display_errors', 1);
 ini_set('max_execution_time', 3000);
 ini_set('memory_limit', '1024M');
define('MAGENTO', realpath('.'));
 require_once(MAGENTO.'/app/Mage.php');
$app = Mage::app();
 $app->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$tax_class_id_value = 2; //mettre l'id de ta classe de taxe
 $product_ids = Mage::getResourceModel('catalog/product_collection')->getAllIds();
Mage::getSingleton('catalog/product_action')->updateAttributes($product_ids, array('tax_class_id' => $tax_class_id_value), 0);
echo count($product_ids) . 'Produits ont été mis à jour...';

Attention!! ce script va réinitialiser la classe de TVA de tout le Catalogue

Extension Magento Menu Personnalisable :

 

il y a de nombreuses extensions  Magento  de Menu personnalisable :

75€ : http://www.magentocommerce.com/magento-connect/supermenu.html

89€ : http://www.magentocommerce.com/magento-connect/ig-dropdown-menu.html

99€ : http://www.magentocommerce.com/magento-connect/navigation-menu-megamenu.html

150€: http://www.magentocommerce.com/magento-connect/supermenu-professional.html

199€ : http://www.magentocommerce.com/magento-connect/tsdesigns-menu-builder-create-multiple-custom-menus-horizontal-and-vertical.html

________________________________________________________________________________

Ce Tuto est en cours de réalisation…


Extension Magento : Filtre à Sélection Multiple

Dans Magento vous avez la possibilité de créer des filtres de sélections sans sélection multiple .

Avec cette extension ça devient possible :

▼Avant —————————————————————- Après ▼

Très Pratique :

Extention Payante 49€ mais très pratique.

 

 

____________________________________________________________

Une autre similaire  Extention encore plus puissante

mais plus chère 119 €

  •  http://www.magentocommerce.com/magento-connect/gomage-advanced-navigation-v-2-1.html

Purger la cache mémoire RAM d’un Serveur linux.

Dans certains cas il peut être utile de vider la cache en mémoire RAM de votre serveur Linux, ça peut libérer jusqu’à 70% de mémoire Vive.

Pour forcer le noyau à abandonner la page de cache, inode dentry caches sans redémarrage.

Il s’agit d’une opération non-destructive. Dirty objets ne sont pas freeable, par conséquent, vous devez exécuter la synchronisation vers le disque dur au préalable. Pour cela il faut d’abord être sur que toutes les écritures disques en caches soit écritent, avec la commande SYNC

si vous utilisez Ubuntu dans un terminal tapez :

sudo su

Ecriture de la cache disque,  dans un terminal tapez :

sync

Puis on vas purger la pagecache de la  mémoire RAM dans un terminal tapez :

echo "1" > /proc/sys/vm/drop_caches

Puis on vas purger dentries libre et les inodes de la  mémoire RAM dans un terminal tapez :

echo "2" > /proc/sys/vm/drop_caches

Ou on peut aussi puger les deux en même temps :  dans un terminal tapez :

echo "3" > /proc/sys/vm/drop_caches

Enfin remettre drop_caches par default

echo "0" > /proc/sys/vm/drop_caches 

Dernier Etape : Redemarrer les services Mysql et apache2 afin qu’il recréer leurs caches.

service apache2 restart
service mysql restart

Mise en garde: Toutes ces commandes fonctionnent uniquement en mode root

___________________________________________________________

Voici un script pour Purger la Cache Ram du Serveur

J’ai fait un tutoriel sur  le Script :

Avec un éditeur tapez :

#!/bin/bash
#!/bin/sh # La première ligne sert à spécifier quel shell tu veux excéuter. ici sh 

# Notice : pour executer un script il faut
# 1) changer ses droits pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

##################################################
### Script de purge du cache de la mémoire RAM ###
##################################################

echo "sync : Ecrit la cache disque en cours"
sync
echo "ok"
echo "Vidage du cache de la memoire RAM niveau 3"
echo "3" > /proc/sys/vm/drop_caches
echo "Pause de 1 seconde"
sleep 1
echo "sync : re-ecrit la cache disque en cours (+ par sécurité, pas indispensable)"
sync
echo "action cache remis par defaut"
echo "0" > /proc/sys/vm/drop_caches
echo "Vidage du cache terminée."
echo "redemarre les services mysql pour recréer la cache c'est conseillé"
service mysql restart
echo "redemarre les services apache2 pour recréer la cache c'est conseillé"
service apache2 --full-restart
echo "******* Terminée ********"

Enregistrez-le sous le nom : PurgeRam.sh

Donnez les droits a l’execution du script dans un terminal

chmod 777 PurgeRam.sh

vous pouvez l’exécuter ou l’ajouter aux tâches planifiées.

__________________________________________________

Créer une tâche Planifiée vers 4H50 du matin

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :  ./Chemin/du/scrip/PurgeRam.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 4H50 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    50 4 * * * ./chemin/PurgeRam.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 50 4 * * * ./chemin/PurgeRam.sh

Explication des instructions crontab sur wikipedia

 j’ai fait un tutoriel sur les taches Planifiées ici

Extension Magento : Produits Packagés affiche Pop Lightbox avec le détail des options (produit simple)

Cette Extention ajoute un bouton « (details) » après chaque option (Produit simple) dans un Produit Packagé

Très Pratique :

Extenston Payante 49€ mais très pratique.

_______________________________________________________________

Mon Avis

  Mérite bien c’est 3 étoiles sur 5, simple à installer, efficace,  aurait mérité 4 étoiles, mais j’ai rencontré une incompatibilité avec l’extension: magento-simple-product-pricing

___________________________________________________________________________

Autres Extensions intéressante (je n’ai pas encore testé)

Montrer vos produits regroupés dans plusieurs carrousels défilement avec des images de produits et de la disponibilité des informations sur la page produit

http://www.magentocommerce.com/magento-connect/catalog/product/view/id/10415/s/xogenics-bundled-carrousels-2554/

http://www.xogenics.com/xogenics/index.php/bundled-carrousels.html

____________________________________________________________________________________

Toujours dans la même série :

l’extension : Options de produits avancés

Créer et assigner des options personnalisées à tous les produits de manière simple. Une installation et d’utilisation cliquez lisse. Economisez votre temps avec des options d’extension de produit avancée Magento

http://www.magentocommerce.com/magento-connect/advanced-product-options.html

http://www.mageworx.com/advanced-product-options-magento-extension.html

_____________________________________________________________________

Modèles personnalisés d’options

Créer des produits avec les mêmes options ou similaire personnalisée beaucoup plus vite!

http://www.magentocommerce.com/magento-connect/custom-options-templates.html
2145 Score de popularité
Score de popularité
Parrainages au site / Téléchargements
0   1 +   250 +   1000 +   10000 +
10  Avis des internautes
Créer des produits avec les mêmes options ou similaire personnalisée beaucoup plus vite!

Plate-forme: Communauté
Plate-forme: Communauté
Plate-forme: Enterprise
Compatible avec: 1.3, 1.4, 1.4.1.1, 1.4.2, 1.5, 1.6, 1.6.1

Obtenez Extension
Vous serez redirigé vers le site du développeur pour compléter votre achat.
79,00 $
Infos /ProfilEmail Soutien Extensions
Image principale
Précédente Suivant

S’il vous plaît noter que cette extension est fourni tel quel. Il est recommandé de toujours sauvegarder votre installation avant de l’utiliser.
Aperçu
Modèles personnalisés d’options

Créer des produits avec les mêmes options ou similaire personnalisée beaucoup plus vite! Des options d’extension Modèles d’administration permet de créer des modèles d’options personnalisées qui peuvent être réutilisés.

Liste des fonctionnalités:

* Permet d’administration pour créer des modèles d’options;
* Permet d’administration pour affecter des produits de masse à des modèles;
* Permet d’administration pour appliquer un modèle d’options lors de la création / édition d’un produit;
Modèles * peut être appliqué à la fois comme des ensembles intégrante de non-éditable options et que ensembles d’options modifiables;
* Quand un modèle est appliqué comme un ensemble intégré, modifications apportées au modèle sont appliquées à chaque produit, où le modèle est utilisé. Cependant administrateur ne peut pas changer les options et les valeurs d’option pour un produit particulier;
vice versa * quand un modèle est appliqué comme un ensemble d’options modifiables, modifications apportées au modèle ne sera pas appliquée aux produits, où le modèle est utilisé. Cependant l’administrateur peut modifier les options et les valeurs d’option pour un produit particulier;
* Sauvegarde et restauration des fonctionnalités pour vos options personnalisées et des modèles (nouvelle fonctionnalité de v3.0.0);
* Livré avec un manuel d’utilisation;
* le code des fonctionnalités de l’extension est 100% Open Source .

Pour avoir une meilleure idée sur la façon dont cette extension fonctionne, s’il vous plaît jeter un oeil à ce tutoriel vidéo court. <span>  </ span>

<span> CE compatible Home Page Extension: http://www.aitoc.com/en/magentomods_custom_options_templates.html   </ span>

<span> EE-compatibles Home Page d’extension: http://www.aitoc.com/en/magentomods_custom_options_templates_ee.html </ span>

<span> Démo:   </ span>

Front-end: http://demo-cot.aitoc.com/index.php/    Back-end: http://demo-cot.aitoc.com/index.php/admin

demouser/welcome1

S’il vous plaît noter que le prix de l’extension dépend du nombre de produits, vous serez en mesure d’appliquer des modèles personnalisés Options pour, et les plages sous forme de 79 $ à 599 $ pour le CE version compatible et 119 $ à 899 $ pour l’EE version compatible. Plus de détails sont disponibles sur la page du produit.

_________________

Nos services comprennent: remboursement de 30 jours, 6 mois de support gratuit et corrections de bugs depuis la date d’achat du module.

<span> Economisez 10% sur chaque achat de plus de 200 $ + obtenir des offres d’actualisation plus grand! </ span>

Joignez-vous sur Facebook pour AITOC offres exclusives

<span>
</ span>

Notes de publication
Avis des internautes (

Extension Magento : Change la méthoque de calcul des produits simples dans les Produits Packagés

Cette Extension permet de changer l’affichage des prix produits simple composant un Produits Packagé.

Exemple :

Dans Magento sans cette extension si vous avez un Produits Packagé :

Ordinateur sur mesure qui contient des processeurs , si vous selectionez le intel Pentium  vous verrez ceci :

Ordinateur 500€

  • Intel Céléron 150€
  • Intel Pentium 200€
  • Intel Pentium D 300€

Total a payer 700€

__________________________________________________________

Avec cette extension vous verrez ceci :

Ordinateur inclus

  • Intel Céléron -50€
  • Intel Pentium  inclus
  • Intel Pentium D +100€

Total a payer 700€

___________________________________________________________

Version Gratuit : compatible Magento 1.5 Maxi ( le jour ou j’écris ces lignes donc a vérifier)

Version Payante :

_______________________________________________________________

Mon Avis

  Mérite bien c’est 3 étoiles sur 5, simple à installer, efficace,  aurait mérité 4 étoiles, mais j’ai rencontré une incompatibilité avec l’extension: magento-bundle-product-options-popup-extension

 

Rédiriger un page html automatiquement (Exemple index.html pour Magento)

Pour rediriger un page vers une autre c’est très simple :

Il suffit d’ajouter dans la page entre les balises <boby> …       …</body> :

<META content="0; url= + L'url vers lequel vous voulez allez + " http-equiv=Refresh target="_top">

Exemple :
<META content="0; url=http://www.votreSite.fr/Magento/index.php" http-equiv=Refresh target="_top">

______________________________________________________

Exemple index.html pour Magento

Création d’un index.html qui va pointer vers l’index.php d’un dossier Magento :

1) il vous faut  un éditeur de Texte  (comme Notepad++ sous windows ou Geany sous Linux)

2) créer un fichier index.html

3) Mettez y :

<html>
   <head>
   </head>
          <body>
<META content="0; url=../Magento/?___store=default" http-equiv=Refresh target="_top">
         </body>
</html>

4) Enregistez sous le nom:  index.html

5) Copier ce fichier à la racine de votre site a l’aide de Filezilla .

Terminée 🙂

Editer local.xml

il est nécessaire de modifier local.xml, si vous avez restaurez ou copié vers une base Mysql différente afin d’indiquer à Magento les nouveaux identifiants :Nom de la Base, utilisateur  et Mot de Passe.

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento:
  • LoginDeLABase : Le nom de l’utisateur de votre base MySQL/Magento
  • MotDePasse : Le mot de Passe de l’utilisateur
  • NomDelaBase : LE Nom de Votre nouvelle Base MySQL/Magento
  • admin : c’est le Chemin d’accès a votre Backoffice.
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[localhost]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName

Voir aussi :

Comment accéder a une Base de donnée Magento a distance.

Comment changer le dossier du BackOffice admin de Magento (sécurité)

Supprimer Vider la cache /VotreMagento/var/cache

Après certaines modifications dans magento, changer de dossier, de nom de base etc.. il est indispensable de vider la cache ! Sans cela votre site va garder les anciens paramètre en mémoire.

Plusieurs solutions selon les cas :

  • supprimer avec fileZilla en n’oubliant pas de cochez Afficher les fichiers cachés du serveurs sans cela il va vous manquer des fichier. (Solution Lente)
  • Utilisez magento-cleanup.hph

A télécharger ici : http://www.magentocommerce.com/wiki/_media/groups/227/magento-cleanup2.zip

Dans le dossier de votre magento, puis exécutez le depuis un Navigateur http://www.VotreSite.xx/votredossierMagento/magento-cleanup.php

  • En Ligne de Commande dans un terminal ou avec putty.exe (solution Ultra Rapide) avec la commande« rm – r  » Attention ne vous trompez pas vous pourriez tous supprimer sur votre serveur !

rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/session

Ou bien: (c’est pareil)

cd var/www/vhosts/VotreSiteInternet/httpdocs
rm -r -f VotreMagento/var/cache
rm -r -f VotreMagento/var/session

Ou bien :

  • Si votre serveur est accessible avec FreeNx
  • Sélectionnez  dans le dossier magento/var/cache et /session
  • Supprimez-les

 

_______________________________________________________

voir aussi le tutoriel pour : Script pour garder en pleine forme Magento.

 

Mettre les droits du dossier Magento (777 / 755)

La première chose qui coinse lorsqu’on installe pour la Première fois Magento.

ce sont les droits le lecture et d’écriture dans les dossier de magento. si Magento n’a pas le droit d’écrire, il ne fonctionnera pas.

Plusieurs solutions selon les cas :

  • Avec filezilla c’est très long : Bouton droit de la souris sur votre dossier Magento et cochez : « Droit d’accès au fichier » > entrez 755 ou 777 et cocher « Recursion dans les sous dossiers, Appliquer à tous les sous-dossiers  et fichiers
  • Solution Ultra rapide ±2 secondes ! En ligne de commande dans un Terminal via interface FreeNx ou putty.exe, tapez : Chmod -R -777 /LeCheminDeVotreDossierMagmento  -Attention ne vous trompez pas vous pourriez planter votre Serveur (ne tapez jamais juste : Chmod -R 755 /)
  • Utiliser le fichier :magento-cleanup.php

    chmod -R 777 var/www/vhosts/VotreSiteInternet/httpdocs/VotreMagento

Ou bien ça c’est pareil:

cd var/www/vhosts/VotreSiteInternet/httpdocs
ls
chmod -R 777 VotreDossierMagento

Ou bien installer le fichier magento-cleanup.php

A télécharger ici : http://www.magentocommerce.com/wiki/_media/groups/227/magento-cleanup2.zip

Dans le dossier de votre magento, puis exécutez le depuis un Navigateur http://www.VotreSite.xx/votredossierMagento/magento-cleanup.php

____________________________________________________________________________

Attention :

Certains Hébergements (OVH privé), refuse les Droits 755 & 777

Après changement des droits votre site plante totalement !

Magento: 500 Internal Server Error

Il faut Changer les droits des dossiers et sous réportoire en 755 (sauf fichiers) puis les droits des Fichiers en 644 (sauf dossiers)

1) Avec filezilla c’est très long : Bouton droit de la souris sur votre dossier Magento et cochez : « Droit d’accès au dossier » > entrez 755  et cocher « Récursion dans les sous dossiers, Appliquer à tous les sous-dossiers.

2) Avec filezilla c’est très long : Bouton droit de la souris sur votre dossier Magento et cochez : « Droit d’accès au fichier » > entrez 644 et cocher « Recursion dans les sous dossiers, Appliquer à tous les fichiers

Ou en Ligne de commandes, il faut ce placer dans votre dossier Magento:

cd var/www/vhosts/VotreSiteInternet/httpdocs/Magento
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 550 pear

Copier tout Magento (Base+Dossier) entre 2 serveurs automatiquement et planifiée

Pour copier Magento entre deux serveurs, automatiquement la Nuit .

J’ai déja fait des script et des tutoriels pour chaque étape:

Tutoriel Comment :

1) il y a 3 Scripts à créer suivez chacun de ces tutoriels :

  1. Désactiver ReWrite dans l’admin >> sytème >> Configuration >> Web >> Utiliser les réécriture du serveur web  mettre NON
  2. Purger les Log pour Réduire la Base et vider la cache
  3. Copier la Base Mysql entre deux serveurs
  4. Copier le dossier Magento en ligne de commande FTP
  5. Modifier Le core_data_config

_________________________________________________________

2) Il n’y a plus qu’a  faire un script qui lance 4 scripts 🙂

A saisir dans un éditeur de texte et enregistrez sous : /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_complet_2serveurs.sh

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

############################################################
#### ETAPE 1 Nettoyer les log .. Exécution du script 1 #########
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

############################################################
#### ETAPE 2 récupérer la base Mysql et la restaurer #########
############################################################

 ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

############################################################
############# ETAPE 4 Copier les Dossiers en FTP ############
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp 

############################################################
############# ETAPE 4 Modifier le Core_data_config #########
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_core_config_data

5) Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Crontab ou Gmone-schedule


Créer une tâche Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_complet_2serveurs.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 5H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_complet_2serveurs.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_complet_2serveurs.sh

Explication des instructions crontab sur wikipedia


 j’ai fait un tutoriel sur les taches Planifiées ici

Script de copie base Mysql entre deux serveurs (magento, Prestashop..)

Le but est de copier une base Mysql entre deux serveurs automatiquement, par exemple toute les nuits à 5h30 du matin.

  • Vérifier que les accès Mysql soient ouverts dans my.cnf
  • avoir au moins une base créer vierge sur le Serveur de destination (la première)
  • créer un petit Script.sh
  • Planifié le Scritp (Cron)

1) Ouvrir l’accès Mysql vers l’extérieur :

  • Editez le fichier : /etc/mysql/my.cnf
  • Commentez la ligne avec un # : skip-networking et Bind-address
  • Redémarrer  : Service mysql restart

J’ai fait un tutoriel ici : Explication pour Autoriser la connexion a distance MySQL

2) La première fois :

Créer une base de donnée vierge et un utilisateur sur le serveur de destination (Cible).

Si vous avez Plesk :

  • Créer la base vièrge : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > Ajouter une nouvelle Base de données

3) Création et Exécution du Script:

Il doit être placé et exécuté dans un dossier du serveur de destination (cible)

Avec un éditeur de texte vous créer un fichier ici et sous le nom : /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

  • Il doit impérativement commencer par : #!/bin/sh

Remplacer

LoginBaseDistant : le nom de l'utilisateur de la base distante 
MotdePasseBaseDistant : Mot de passe de la base distante
NomBaseDistant : nom de la base distante 
VotreCheminCible : Votre dossier de destinations
#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "Etape 1 ) Récupération de la base distante et sauvegarde en cours..."
 mysqldump -h 192.154.154.10 -u LoginBaseDistant -pMotdePasseBaseDistant NomBaseDistant >/VotreCheminCible/Sauvegarde.sql 

chmod 777 /VotreCheminCible/Sauvegarde.sql  

echo "Etape 2 ) Restauration sur ce serveur de cette sauvegarde en cours..."

mysql -u LoginBase -pMotdePasseBase NomBase </VotreCheminCible/Sauvegarde.sql 

echo "Terminée"
  • Enregistrer le fichier dans un  dossier de votre Serveur, par exemple /var/MesSauvegarde/sauvegardeMysql.sh
  • Ajouter le Droit de exécuter : chmod 777 /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh
  • Pour exécuter il vous plus qu’a taper :
    ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

4) Modifier automatiquement : Core_Config_data

Pour Magento : Ajouter des instructions Mysql pour Modifier automatique le fichier Core_Config_data :

si votre Serveur Destination n’a pas le même dossier pour Magento, et certainement par la même URL, voici ce de vous devez ajouter ceci au Script pour qu’il modifie automatiquement le  Core_Config_data :

C’est très simple, dans un petit fichier texte vous saisissez les instructions Mysql que vous avez besoin, vous ajoutez un ; a la fin de chaque ligne.

Dans un Fichier texte appeler :mes.mysql

je saisie ces deux lignes pour Modifier le Core_config_data de Magento

update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/secure/base_url";
update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/unsecure/base_url";

Pour l’exécuter, je peux saisir :

Mymysql -h localhost -u User161 -p35hpzq.. Base161 < mes.mysql

Ou vous ajouter au  Script   (voir Tuto créer un Script)

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "Lancement du Script"
mysql -h localhost -u User161 -p35hpzq.. Base161 <mes.mysql
Echo "Terminé"

5) Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Crontab ou Gmone-schedule


Créer une tâche Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 5H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

Explication des instructions crontab sur wikipedia


 j’ai fait un tutoriel sur les taches Planifiées ici

_______________________________________________________


VOIR AUSSI : Voir tutoriel Créer une sauvegarde Mysql Magento en ligne de commande ici

Script pour garder en pleine forme Magento.

Script pour garder en pleine forme Magento.

Avec un éditeur de texte nous allons créer un fichier script.sh,

Il doit impérativement commencer par : #!/bin/sh

Nous allons y mettre tout ce que votre serveur Magento a besoin de faire régulièrement.

  • Nettoyer les log de la base de données régulièrement
  • Exécuter la tache Cron.sh de Magento
  • Vider la corbeille du serveur
  • Vider dossier cache et session*
  • Redémarrer les Services apache
  • Redémarrer les Services Mysql
* Mise en garde : vider les sessions a pour effet de vider les paniers en cours et déconnecte les utilisateurs en cours.

_______________________________________________________

 Nettoyer les log de la base de données régulièrement

1) Créer un fichier est les instructions Mysql pour vider les table de Log

Créer avec un éditeur un fichier texte , nommez -le : Vider_table_log.mysql

DELETE FROM dataflow_batch_export;
DELETE FROM dataflow_batch_import;
DELETE FROM log_customer;
DELETE FROM log_quote;
DELETE FROM log_summary;
DELETE FROM log_summary_type;
DELETE FROM log_url;
DELETE FROM log_url_info;
DELETE FROM log_visitor;
DELETE FROM log_visitor_info;
DELETE FROM log_visitor_online;
DELETE FROM report_viewed_product_index;
DELETE FROM report_compared_product_index;
DELETE FROM report_event;

Enregistrez les dans votre dossier /magento/shell/

2) On va créer le Script de purge :

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod +x NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

############################################################
#### ETAPE 1 Nettoyer les log de la base de données ###########
############################################################

#### Connexion a votre Base de Données Magento Mysql ####
##### mysql -h machine -u utilisateur -pMotdePase base_de_données
##  Exemples :
##  mysql -h localhost -u User161 -p35hpzq.. Base161
##  mysql -h 17.31.2.67 -u User161 -p35hpzq.. Base161
## vous pouvez tester dans un terminal, Si vous ête connecté il doit apparaitre :  Mysql>
##  Modifier ci-dessous pour mettre vos paramètre

mysql -h localhost -u User161 -p35hpzq.. Base161 < /magento/shell/Vider_table_log.mysql 
echo "si vous n'avez vu aucun message d'erreur la base est purgé :)"

#########################################################
#### ETAPE 2 Exécuter la tache Cron.sh de Magento #######
#########################################################
/var/www/vhosts/VotreSite.fr/httpdocs/DossierMagento/cron.sh

#########################################################
#### ETAPE 3 Vider la corbeille du serveur ################
#########################################################
rm -r -f /var/.Trash-0/

#########################################################
#### ETAPE 4 Vider cache et session #######################
#########################################################
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache

# Attention cette ligne va également vider les panier en cours et déconnecter les utilisateurs
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/session

#########################################################
#### ETAPE 5 Redémarrer les Services apache #############
#########################################################
service apache2 restart

#########################################################
#### ETAPE 6 Redémarrer les Services mysql ##############
#########################################################
service mysql restart

3) Exécuter :

  • Enregistrer le fichier dans un  dossier de votre Serveur, par exemple
     /var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Ajouter le Droit de l’exécuter :
    chmod +x /var/MesSauvegarde/sauvegarde.sh
  • Pour l’exécuter il vous reste plus qu’a taper :
    ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

______________________________________________________

Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Cron ou Gmone-schedule


Créer une tâche Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Script Magento en pleine forme”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 7H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

Explication des instructions crontab sur wikipedia


 j’ai fait un tutoriel sur les taches Planifiées ici

_______________________________________________________

On peut aussi ajouter:

  • Sauvegarder la base de Magento
  • Compresser cette sauvegarde
  • Copier cette Sauvegarde vers un autre dossier

Voir tutoriel Créer une sauvegarde Mysql Magento en ligne de commande ici

C2) Permuter entre deux serveurs Magento.

Si vous changez les DNS de vos noms de domaines pour basculer vers un nouveau serveur, la diffusion prend 48H pendant ce temps vous ne savez pas sur quel serveur vous serrez.

Pour le répertoire Magento, c’est pas trop grave du moment que vous utilisez le même nom de dossier et le même nom de domaine.

Par contre la Base de donnée elle risque de ne plus être à jour, car vous risquez d’avoir des commande sur le Serveur 1 et sur le serveur 2

La Solution:

1) Copier le Site et la Base de donnée

J’ai fait de nombreux tutoriels selon les cas ici : Sauvegardes Magento

3) Autoriser l’accès à la base de donnée Mysql a distance dans le my.cnf : j’ai fait un tuto sur ce sujet ici

Dès que vous êtes Prêt a Basculer :

4) Modifier le Local.xml du la Base du Serveur Numéro 1

4a) Mettez-y les paramètre pour utiliser la base du Serveur N°2

Local.xml

il est nécessaire de modifier local.xml

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento et le nouveau serveur:
  • IpDuNouveauServeur : c’est l’ip du serveur Distant Mysql
  • LoginDeLABase : Le nom de l’utilisateur de la base MySQL/Magento Distante
  • MotDePasse : Le mot de Passe de l’utilisateur de la Base distante
  • NomDelaBase : Le Nom de Base MySQL/Magento Distante
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[IpDuNouveauServeur]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName

5) Important :

Vider la cache et les Sessions :  Dans le Dossier /magento/var/cache et /magento/var/session

Si non la modification du Local.xml ne sera pas pris en compte.


6) Pointer vos noms de Domaine vers IP (DNS) du nouveau Serveur

Attention ça peut prendre 24/48H de propagation…

Vu que vous avez déja la base de données Magento qui pointe vers le nouveau serveur, vous pouvez, Changer des Prix, traiter des Commandes etc…

Mais n’ajoutez rien Produits, images, etc.. pendant le temps de la Propagation.

Terminé 🙂


Si vous Utilisez un Ip FailOver j’ai fait ce tutoriel ici : Permuter entre deux serveurs avec ip failover Ovh sous plesk


Ligne commande des instructions Mysql Magento (exemple Core_Config_data)

Utilisation de MySQL en ligne de commande :

1)  Accéder a la base :

-h: machine hôte
-u: utilisateur MySQL (pas Unix)
-p: mot de passe MySQL

A saisir dans un terminal ou en SSH avec Putty.exe

mysql -h machine -u utilisateur -pMotdePase [base_de_données]

Exemple :
mysql -h localhost -u User161 -p35hpzq.. Base161
mysql -h 17.31.2.67 -u User161 -p35hpzq.. Base161

Si vous ête connecté il doit apparaitre : Mysql>

2) Tapez en lignes  les instructions MySQL:

Après avoir saisie la ligne de connexion a votre base dans un terminal :

Exemple
mysql -h localhost -u User161 -p35hpzq.. Base161
Mysql>

Il ne vous reste plus qu’a entrer des instructions MySQL :

Exemple Mysql> update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/secure/base_url";

3) Créer un Script d’instructions MySQL:

C’est très simple, dans un petit fichier texte vous saisissez les instructions Mysql que vous avez besoin, vous ajoutez un ; a la fin de chaque ligne.

Exemple  dans un Fichier texte appeler :mes.mysql

je saisie ces deux lignes pour Modifier le Core_config_data de Magento

update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/secure/base_url";
update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/unsecure/base_url";

Pour l’exécuter, je peux saisir :

mysql -h localhost -u User161 -p35hpzq.. Base161 < mes.mysql

Ou créer un Script   (voir Tuto créer un Script) : nommez le :

/var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_core_config_data.sh

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "Lancement du Script"
mysql -h localhost -u User161 -p35hpzq.. Base161 <mes.mysql
Echo "Terminé"

source : http://tecfa.unige.ch/guides/tie/html/mysql-intro/mysql-intro-7.html


4) Quelques Instructions Mysql pour Magento

Modifier une donnée dans une Table Mysql de Magento

Exemple pour  changer le Chemin de Magento : 

http://MonSite/MonDossierMagento/

Il faut Modifier la table : core_config_data

update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/secure/base_url";
update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/unsecure/base_url";

Supprimer tous les produits du catalogue Magento

truncate catalog_product_entity;

Faire un Backup de la Base Mysql, j’ai fait un Tuto détaillé ici 

mysqldump -u LoginUtilisateur -pMotDePase NomDeLaBase > MaSauvegarde.sql

Faire une Restauration de la Base Mysql, j’ai fait un Tuto détaillé ici 

mysql -u LoginUtilisateur -pMotDePase NomDeLaBase < MaSauvegarde.sql


Lancer en Cron.php ou Cron.sh de Magento et Planifier

1) En ligne de commande à Planifier:

l’interet de la ligne de commande c’est :

  • C’est très facile
  • C’est très rapide
  • Vous pouvez l’ajouter dans les taches planifiées (cron)
php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.phplog.php clean

ou bien : 

/var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh

3) Taches Planifiées avec gnome-schedule

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description « Ma sauvegarde du Lundi »
  • Commande : Précisez votre la ligne de commande :
    ./var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh
  • Expert saisissez : Minute 10 – Heure 6 – jour * – Mois * – jour de la semaine 1 = à 6H10 tous les lundi
  • Ajouter et Valider

Vous pouvez Cliquez sur  Lance la tache Sélectionner + « Exécuter » pour tester la tache.

________________________________

3 Bis ) Ou créer une tâche Planifiée avec crontab

Planificateur de tâche en ligne de commande

(sans gnome-schedule), tapez :
crontab -e
insérez : 10 6 * * * ./var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh

Explication des instructions crontab sur wikipedia

Purger pour réduire la base MySQL de Magento et Planifier

Nettoyage des Log de Magento soit en manuel via PhpMyAdmin ou en Ligne de commande.
C’est le moyen le plus efficace de nettoyer les logs pour ceux qui travaillent plus à l’aise avec les bases de données. Il est plus rapide que le haut-dans les outils de Magento, et il vous permet de nettoyer quelques tables non incluses dans ces outils.

1) phpMyAdmin via le Panneau Plesk

Dans la droite (principale) une image, sélectionnez la case à cocher pour les tables suivantes:

dataflow_batch_export
dataflow_batch_import
log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online
report_viewed_product_index
report_compared_product_index
report_event
  • Au bas de la page, cliquez sur le menu déroulant qui dit « avec une sélection: » et sélectionnez « vide ».
  • Un écran de confirmation s’affichera. Cliquez sur « Oui ». Cela tronque toutes les tables sélectionnées.

Effectuer régulièrement :
Nous avons vu 2Go + bases baisse d’un quart de leur taille après le nettoyage des journaux, il est donc très important que ce genre d’entretien sont effectués régulièrement. Surtout si votre temps jusqu’au premier octet de latence commence à pousser plus grande, et vous avez mis en œuvre les tweaks de performance.

Source : http://docs.nexcess.net/magento-database-maintenance

2) En ligne de commande à Planifier:

l’interet de la ligne de commande c’est :

  • C’est très Facile
  • C’est très rapide
  • Et vous pouvez ajouter cette ligne dans les Taches Planifier a faire régulièrement (cron)
php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

3) Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description « Ma sauvegarde du Lundi »
  • Commande : Précisez votre la ligne de commande : php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean
  • Expert saisissez : Minute 0 – Heure 6 – jour * – Mois * – jour de la semaine 1 = à 6H00 tous les lundi
  • Ajouter et Valider

Vous pouvez Cliquez sur  Lance la tache Sélectionner + « Exécuter » pour tester la tache.

  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 6 * * * php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 6 * * * php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

Explication des instructions crontab sur wikipedia

_________________________________________________________

4) Méthode plus efficace, par des instructions mySQL dans un Script

voir ce tutoriel ici

Script sauvegarde du dossier Magento entre deux serveurs

Pour copier le dossier de Magento entre deux serveurs, automatiquement la Nuit .

il faut :

  • Installer curlftpfssur les serveurs (au moins sur celui Destination)
  • Créer un Script de copie entre les deux serveurs
  • Planifier l’exécution du script la nuit (matin très tôt +-5h)

Pour installer curlftpfssur  soit en ligne de commande dans un terminal (ssh avec putty.exe), tapez

sudo apt-get install curlftpfs

Soit sous gnome si vous acceder a gnome via un interface grahique voir FreeNX

> ubuntu > applications >Logithèque Ubuntu > curlftpfss

_______________________________________________________

voici que que nous allons mettre dans le Script

A saisir dans un éditeur de texte : enregistrez sous : /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh


#!/bin/sh
# La première ligne sert à spécifier quel shell à excéuter. (sh)
# pour executer un script il faut
# a) changer le droit devenir executable:  chmod 777 NomDuScrip.sh
# b) puis l'executer : ./NomDuScrip.sh
##################################################################

#  Création de deux dossiers temporaires sur votre serveur :  /
mkdir /var/ftpt
mkdir /var/ftptemp

# 2 Activer la connexion du serveur distant en FTP vers ce dossier /var/ftp
# Vous devez connaitre le nom du ServeurFTP, Login et Mot de passe
curlftpfs ftp://MonServeurFtp.fr/DossierDistant /var/ftp -o user=Login:MotDePasse

# 3 Purger la cache du serveur distant :
rm -Rf /MonFtp/Magento/var/cache
rm -Rf /MonFtp/Magento/var/session

# 4 Purger la cache du serveur destination :
rm -Rf /var/www/vhosts/VotreSite.fr/httpdocs/Magento/var/cache
rm -Rf /var/www/vhosts/VotreSite.fr/httpdocs/Magento/var/session

# 5 sauvegarder .htaccess et local.xml du serveur Destination
cp /var/www/vhosts/VotreSite.fr/httpdocs/Magento/app/etc/local.xml /var/ftptemp/sauvegarde_local.xml
cp /var/www/vhosts/VotreSite.fr/httpdocs/Magento/.htaccess /var/ftptemp/sauvegarde_htaccesslocal
#
# 6 Copie du dossier Magento (Serveur distance source) vers le celui-ci
# avec la commande cp -r  vous pouvez ajouter 
# -uNe pas effectuer la copie si le fichier destination existant a une
# date  de  modification  plus  récente que celle du  fichier source.
cp -r -u /var/ftp/magento /var/www/vhosts/MonSite.fr/httpdocs/
#
# 6 Remettre .htaccess et local.xml du serveur Destination
cp /var/ftptemp/sauvegarde_local.xml /var/www/vhosts/VotreSite.fr/httpdocs/Magento/app/etc/local.xml
cp /var/ftptemp/sauvegarde_htaccess /var/www/vhosts/VotreSite.fr/httpdocs/Magento/.htaccess
#
# 7 Vérifier les Droits
chmod -R 777 /var/www/vhosts/VotreSite.fr/httpdocs/Magento/
#
# 8 Désactiver le ftp /var/ftp/ (démonter)
umount /var/ftp
#
# 9 supprimer des dossiers temporaires /var/ftp et /var/ftptemp
rm -Rf /var/ftp
rm -Rf /var/ftptemp

#
#
# Terminée....

Pour Exécuter le script :

changer le droit devenir executable:

chmod 777 /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh 


Exécuter :

./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh 

_______________________________________________________

Attention : Il faut aussi copier la base de données Mysql de Magento

J’ai fait deux autres tutoriels  dont  un qui regroupe les deux en mêmes temps Base + Dossier ici : Tutoriel pour automatiser une copie total de magento entre deux serveurs

et un juste pour la Base Mysql ici : Comment créer un script de copie base mysql-entre deux serveurs magento prestashop

_______________________________________________________

Créer un Tache Planifier pour lancer ce script Automatiquement :

Créer une tâche Planifiée

Pour installer le planificateur taches gnome schedule suivre ce tutoriel.

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine 1 = à 7H00 tous les lundi
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.___________________________________________________________________

    Ou  avec crontab  (Planificateur de tâche en ligne de commande )

    (sans gnome-schedule), tapez :
    crontab -e
    insérez :0 5 * * *
    /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Explication des instructions crontab sur wikipedia

     j’ai fait un tutoriel sur les taches Planifiées ici

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

Modifier le Chemin du Back Office /admin/ de Magento

D’origine le chemin de l’admin de Magento (Backoffice) est :

http://www.Votresite.fr/Dossier Magento/index.php/admin/

Bien Trop Facile à trouver, donc bien trop dangereux.

Voici comment le modifier, Editer local.xml

il est nécessaire de modifier local.xml

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Modifier la ligne frontName  [admin]  par exemple par MonAdmin
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[IpDuNouveauServeur]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName ![CDATA[MonAdmin]] /frontName

Connectez Magento a une Base de données Mysql d’un serveur distant.

Pour une multitude de raisons, on peut a voir besoin de connecter Magento a une base de données distante.

  • si vous avez un hébergement mutualisé
  • Si votre Hébergement et trop lent
  • Pour utiliser une sauvegarde
  • Pour des test…

Il faut d’abord :

  1. Autoriser la connexion à distance MySQL du Serveur distant
  2. Avoir  copié votre Base de donnée Mysql Magento sur ce serveur
  3. Modifier le fichier de configuration Magento : local.xml

1.Autoriser la connexion à distance MySQL du Serveur distant

Ouvrir l’accès Mysql vers l’extérieur :

  • Editez le fichier : /etc/mysql/my.cnf
  • Commentez la ligne avec un # : skip-networking et Bind-address
  • Redémarrer  : Service mysql restart

J’ai fait un tutoriel ici : Explication pour Autoriser la connexion a distance MySQL


2. Avoir copié votre Base de donnée Mysql Magento sur ce serveur

j’ai fait plusieurs explication pour tranférer la base de données MySQL de Magento, selon votre cas ici :


3. Modifier le fichier de configuration Magento : local.xml

 Editer local.xml

il est nécessaire de modifier local.xml

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento et le nouveau serveur:
  • IpDuNouveauServeur : c’est l’ip du serveur Distant Mysql
  • LoginDeLABase : Le nom de l’utilisateur de la base MySQL/Magento Distante
  • MotDePasse : Le mot de Passe de l’utilisateur de la Base distante
  • NomDelaBase : Le Nom de Base MySQL/Magento Distante
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[IpDuNouveauServeur]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName

Important :

Vider la cache et les Sessions :  Dans le Dossier /magento/var/cache et /magento/var/session

Si non la modification du Local.xml ne sera pas pris en compte.

Copier une base MySQL entre 2 serveurs avec Plesk (Magento, Prestashop, etc…)

Que ce soit une Base Magento, Prestashop ou tout autre, c’est du MySQL.

Avez vous déjà essayez d’utiliser Plesk (à partir de la 10 ou supérieur) pour copier votre base de données MySQL

C’est très simple mais d’origine ça ne fonctionner pas !

Procédure :

1) Ouvrir l’accès Mysql vers l’extérieur :

  • Editez le fichier : /etc/mysql/my.cnf
  • Commentez la ligne avec un # : skip-networking et Bind-address
  • Redémarrer  : Service mysql restart

J’ai fait un tutoriel ici : Explication pour Autoriser la connexion a distance MySQL

2) Créer une base de donnée vierge et un utilisateur

Sur le serveur de destination (Cible).

  • Créer la base vièrge : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > Ajouter une nouvelle Base de données

3) Copier la  base de donnée vers l’autre serveur

Sur le serveur Source (de départ):

  1. Copier la base : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > la Base source
  2. Cliquez sur faire une copie
  3. Serveur de la base de données cible Sélectionnez :  Autres…
  4. Saisissez Nom d’hôte ou adresse IP * :  Mettre ip du serveur cible
  5. Nom d’utilisateur* mettre le nom de la base cible (la base vierge)
  6. Mot de passe* de la base cible (la base vierge)
  7. Coché : Copier vers la base de données existante :
  8. Saisissez le nom de la Base cible (la vierge)

Terminé 🙂


Pour Magento :

Pour utiliser cette copie votre Magento dans un autre dossier ou serveur, il va faloir modifier aussi, core_config_data, Local.xml, .htaccess.. j’ai fait un tuto ici.


Voici ici une autre méthode pour:

Automatiser la sauvegarde Mysql entre 2 serveurs. avec un Script :

J’ai fait un Tutoriel ici : Comment automatiser la sauvegarde Mysql entre 2 serveurs. avec un Script

Autoriser la connexion à distance MySQL sur Serveur (Plesk)

Pour des raisons évidentes de sécurité les Serveur sont parametré par defaut pour utiliser uniquement les bases de données en local : Localhost 127.0.0.1

Pour de nombreuses, on veut pouvoir accéder a la base de données Mysql à partir d’un autre serveur au Hébergement

Cela permet de séparer la base de donnée de votre Hébergement php/html, Faire des copies entre Serveurs Etc..

 

Il faut Modifier sur votre Serveur de base de donnée MsSQL deux lignes dans le fichier my.cnf

Editez le fichier : /etc/mysql/my.cnf
Commentez la ligne avec un # : skip-networking et Bind-address 

port   = 3306  (normalement c'est déjà par defaut)
#Commenter cette ligne
#skip-networking

# Commenter cette ligne
# Bind-address = 127.0.0.1
# ou facultatif : vous pouvez mettre l'adresse du serveur
Bind-adresse = 176.31.254.010  (exemple d'adresse)

Redémarrez MySQL : /etc/init.d/mysql restart , dans un terminal,  ssh

service mysql restart

Une seule adresse peut être sélectionné. Si cette option est spécifiée plusieurs fois, la dernière adresse indiquée est utilisée.

Si aucune adresse ou 0.0.0.0 est spécifié, le serveur écoute sur toutes les interfaces.

Source : http://kb.parallels.com/fr/1134

Optimiser votre serveur Magento, votre hébergement pour Magento – PHP.ini – my.cnt – Nginx.cong

Les sujets qui vont êtres abordés :

  • .htaccess
  • php.ini
  • php_admin_value memory_limit,
  • php_value max_execution_time
  • my.cnf

.htaccess conseillé pour Magento :

Voici un .htaccess optimisé pour Magento,

RewriteBase /VotreDossierMagento/

# memory_limit Mini conseillé 64M
php_value memory_limit 128M
php_value max_execution_time 18000

# Facultatif : pour Activer la compression gain de 30%
<IfModule mod_deflate.c>
php_flag zlib.output_compression on   
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascrip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>

 

inutile depuis fooman-speedster > 2.0Si vous avec installez l’extention : fooman-speedster < 1.2 ajouter dans le .htacces

#Si vous utilisez l'extension d'acceleration fooman-speedster RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2



Php.ini

c’est le fichier d’initialisation (réglage) de votre php, c’est donc un fichier important.

Il peut être paramétré à 3  endroits,  c’est le dernier qui l’emporte, plafonné par les restrictions des précédents:

  • Le premier c’est celui du serveur donc générale, valable pour tout les sites hébergés sur le serveur.
  • Sur un serveur avec Plesk 11 il se trouve ici : opt/psa/admin/conf/php.ini)

Edit le 1/07/2014 :

  • Sur un serveur avec Plesk 12 il se trouve ici : etc/php5/apache2/php.ini  et  etc/php5/apache2/cgi/php.ini

     

 

  • Le second c’est celui de votre site, il n’est valable que dans votre site, il est prioritaire à celui du serveur dans la limite autorisé par le premier  ( domaine d’un serveur avec Plesk il est ici : var/www/vhosts/VotreSite/conf)
  • Le Troisième c’est celui de chaque dossier dans le .htaccess (pour le voir pensez a afficher les fichiers cachés) .  il est prioritaire à celui du premier (serveur), et du Second (domaine) dans la limite autorisé par le premier comme le Second.

Exemples  d’erreurs fréquentes : 

1) Dans le .htaccess de votre dossier Magento vous mettez :

php_admin_value memory_limit 256M

ça ne sert a rien si votre Serveur limite à 128M et votre Domaine limite à 64M, votre Limite est de 64M.

2) Autre erreur :

Vous modifiez le premier ../conf/php.ini, = 256M, mais laissez les deux autres d’origines  (var/www/vhosts/VotreSite/conf, et celui dans .htaccess), ça ne sert a rien aussi, si dans le .htaccess la ligne limite est à 32M, c’est lui qui sera pris en compte 🙂

php.ini du Serveur: php_admin_value memory_limit 256M 
Ligne dans .htacces: php_admin_value memory_limit 32M

Maintenant que savez ça, nous allons pourvoir  paramétrer PHP pour Magento correctement .


php_admin_value memory_limit

Magento recommande 64M, c’est la valeur pas défaut dans le .htacces, vous pouvez toujours mettre un peu plus 128M voir 256M (toujours dans la limite de Php.ini du serveur)

Selon les cas :

  • Hébergement Mutualité : Mettre dans .htacces de votre dossier Magento (demandez à votre Hebergeur le Maxi autorisé possible)

.htacces :

php_admin_value memory_limit = 128M
  •  Serveur Dédié avec Plesk : Si  vous avez un serveur puissant dans .htaccess commentez la ligne  # (# = désactiver la ligne), et paramétrez directement le domaine ou le Serveur,

1) dans .htaccess du dossier Magento

#ligne commenté car j'utilise le paramêtre dans Plesk
#php_admin_value memory_limit = 64M

2) Dans  Plesk > Domaines > VotreNomDomaine >  Personnalisé > Paramètre PHP >

memory_limit  Saisissez

  • -1    comme illimité (serveur 16Go ou +)
  • 256 Mo        pour Serveur avec 8Go de Ram
  • 128 Mo        pour Serveur avec 4Go de Ram
  • 64 Mo          pour un serveur de 2Go de ram
 -Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications

Attention : Mettre -1 illimité comporte des risques : Si un Script, une tache Cron part en vrille, elle  peut consommer toute la mémoire de votre Serveur, donc celui-ci va planter, utiliser -1 que si vous êtes sûr 100%, surveillez-la charge de votre serveur, si non mettez 256Mo c’est largement suffisant.


php_value max_execution_time

Magento recommande 18000, c’est la valeur pas défaut dans le .htacces, vous pouvez toujours mettre un peu plus 180000 (toujours dans la limite de Php.ini du serveur)

php_value max_execution_time 180000

# ou désactivé la si vous utilisez les paramètres dans Plesk
#php_value max_execution_time 180000
  •  Serveur Dédié avec Plesk : Si  vous avez un serveur puissant (dans .htaccess commentez la ligne  # (# = désactiver la ligne), et paramétrer directement le domaine ou le Serveur, vous pouvez mettre « 1800000 »
 -Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications

Paramétrage de PHP.ini

Conseillé pour Magento :  opt/psa/admin/conf/php.ini

Modifier

  • memory_limit = 512M     (256M si serveur 8Go, 128M si serveur 4go)
  • max_execution_time = 18000
  • max_input_time = 1200
  • output_buffering = 4096

Facultatif Ajouter

  • default_socket_timeout = 1800000
  • pdo_mysql.cache_size = 2000
  • mysql.allow_persistent = On
  • mysql.connect_timeout = 1500  (edit le 01/07/2014)

Ou Vous pouvez aussi saisir directement dans  Plesk > Domaines > VotreNomDomaine >  Personnalisé > Paramètre PHP >

-Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications

Pensez a Désactivé ces paramètres dans .Htaccess de Magento si elle existe pas #


Optimiser Mysql / Magento dans my.cnf

my.cnf, : c’est le fichier de configuration de la base Mysql , sur un serveur avec Plesk il est ici : /etc/mysql/my.cnf

Selon les Cas :

Serveur avec de 4 à 8Go

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 192K
query_cache_limit    = 1M
query_cache_size        = 24M
table_cache = 1024

Serveur avec 16Go avec 4x Core

key_buffer        = 32M
max_allowed_packet    = 32M
thread_stack        = 192K
query_cache_limit    = 2M
query_cache_size        = 64M

####### Facultatif Ajouter ######
 table_cache = 1024  
# 2x le nombre de cores CPU innodb_thread_concurrency = 8
innodb_thread_concurrency = 8
#(safe vs speed, 0 speed, 1 safe, 2 mixed)
 innodb_flush_log_at_trx_commit = 0
 innodb_log_buffer_size = 32M
# 66% de la mémoire disponible # (3 Go sur un serveur web 8 Go de RAM ) # (1024M sur un site web 4 Go de RAM
innodb_buffer_pool_size = 4096M
innodb_additional_mem_pool_size = 32M
########  fin de l'ajout  #######

Pensez a redémarrer le Service Mysql pour prendre en compte les modifications.


Serveur NGINX

Si votre serveur utilise NGINX pour éviter des time_out au bout d’une minutes :

Par default le time_out est à 60  (60 secondes ) voici ma moficiation

Créer un fichier « mon_nginx »   dans le dossier  /etc/nginx.conf/ contenant :

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6008;
## ne pas mettre autre chose + utilisera de la mémoire pour rien.
fastcgi_buffers 8 256k;
fastcgi_buffer_size 512k;

Pensez a redémarrer les services nginx pour prendre en compte les modifications :

 


Restaurer la Base MySQL avec une Sauvegarde de Magento

Restaurer avec la Sauvegarde par Magento : « Quelle Galère, dire que j’ai utilisé cette solution pendant plus d’un an » c’est Lent, Compliqué et pas fiable !

Si vous pouvez éviter,  j’ai crée un tutoriel qui explique comment restaurer en moins d’une minutes, simple et efficace : Copier Sauvegarder et Restaurer facilement une Base Mysql de Magento

Si vous n’avez pas le choix, si vous utilisez un Hébergement Mutualisé voici la procédure :


Restaurer une Sauvegarde Magento il faut :

  • Faire la sauvegarde dans Magento
  • Décompresser la sauvegarde
  • Éditer la sauvegarde
  • Supprimer Créer une Base Vierge
  • Découper la sauvegarde en plusieurs parties (éventuellement)
  • Restaurer (importer dans une nouvelle base)
  • Éditer core_config_Data (éventuellement)
  • .htaccess (éventuellement)

  1.Faire la sauvegarde dans Magento

Faire une Sauvegarde de votre Base de donnée dans magento Admin Panel>System>Outil>Sauvegarde

Puis cliquez sur gz pour récupérer cette sauvegarde

date
1195xx
BD
gz peut être décompressée avec 7-Zip

Si votre base est trop grosse, et que vous n’arrivez pas a sauvegarder, voici deux méthodes Beaucoup plus efficace mais qui voir : ce Tutoriel : Copier Sauvegarder et Restaurer facilement une Base Mysql de Magento


   .2 Décompressez La Sauvegarde

  • Vous munir d’un utilitaire de décompression comme Peazip.exe par exemple ou 7-zip.exe (vous trouvez ça dans google sur Filehippo.com ou Clubic)
  • Décompresser votre Sauvegarde

   .3 Éditer la sauvegarde

  • Avec un éditeur de texte comme Notepad ++  ou Geany par exemple ouvrez la sauvegarde.
  • Supprimer en début du fichier ce que j’ai barré (laissé le ; à la fin de chaque ligne)
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ ;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */ ;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */ ;
/*!40101 SET NAMES utf8 */ ;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */ ;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  • Supprimer en fin du fichier ce que j’ai barré (laissé le ; à la fin de chaque ligne)
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */ ;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */ ;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */ ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */ ;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */ ;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */ ;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */ ;

Si votre sauvegarde est grosse pensez a compresser avant de la restaurer


.5  Supprimer / Créer une Base viège

Selon les cas:

  • Hebergement Mutualisé : Si vous êtes sur un Hebergement Mutualisé le plus simple est passer par le Management de votre compte pour supprimer la Base et la ré-créer. (si vous avez le droit a plusieurs Base MySQL, créer en une autre a coté de l’ancienne
  • Plesk : Si vous avez Plesk, (Pourquoi suivez-vous ce Tuto, car dans plesk il  y a plus simle ! voir celui-ci ) Plesk > Domaines > Gérer l’Hébergement >  Sites Web & Domaines > Base de Données > supprimer  Puis > Ajouter une nouvelle base de données.
  • phpMyAdmin : par phpMyAdmin il faut Sélectionner la Base > Cocher toutes les tables > Pour la sélection choisirSUPPRIMER   – Il faut recommencer plusieurs fois l’Opération,  ±5 fois – il n’y aura pas besoin de re-creer la base car elle existe deja, elle juste vide.

.5 Restaurer

Il existe plusieurs solutions pour restaurer votre Base MySQL Magento,

mysql -u LoginDeLaNouvelleBaseVierge -p NomDeLaBaseNouvelleBaseVierge < /CheminDeLaSauvegarde/sauvegarde.sql

Si vous ne pouvez saisir de ligne de commande, c’est que vous êtes sur un Hébergement Mutualisé, votre Hébergeur a du vous fournir un accès à phpMyAdmin pour gérer votre Base MySQL, si nous n’avez pas le minimum, il va falloir demander a votre Hébergeur quel solution il propose, ou changer d’Hébergement voir ce tuto.

  • phpMyAdmin :  > Sélectionnez la Base (elle doit être vide sans aucune table) > Importer > Parcourir > choisir votre fichier de sauvegarde > Exécuter
  • Si votre base est petite ça va passé 🙂
  • Si elle est un peu grosse, compresser-la, phpMyAdmin supporte les fichiers compressés 🙂
  • Si elle est trop grosse, seule une partie a été importé, il faut donc la découper 😦

.5 Découper en plusieurs parties à restaurer

Si elle est trop grosse, seule une partie a été importé, il faut donc la découper.

  • Avec PhphMyAdmin regardez la dernière table importée, notez son Nom et suprimez-la ( la dernière à été restaurée importé incomplète)
  • Avec un éditeur de texte comme Notepad ++  ou Geany par exemple
  • Ouvrez la sauvegarde. (la version  de la sauvegarde décompressée uniquement)
  • Laissez les Premières lignes, Puis supprimer tout jusqu’à Table que vous avez NOTEZ.
SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT;
SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;
SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION;
SET NAMES utf8;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;

Suprimez tout....... 

         ......jusqu'à la Base de vous avez Noté

--
-- Table structure for table `Nom Table que vous avez Noté`
--
  • Sauvegardez le fichier sous « Partie_2.sql » (éventuellement compressez là)
  • phpMyAdmin :  > Sélectionnez la Base (elle doit être vide sans aucune table) > Importer > Parcourir > choisir votre fichier Partie_2.sql(ou .gz) > Exécuter
  • Recommencez au s’il faut une partie 3, Notez, supprimer, enregistrez sous, Importer, etc..

Si vous n’avez pas réussi à découper votre Base, c’est quelle trop grosse pour être ouvert par un editeur de texte. Vous n’avez pas d’autre choix que de l’importer/Restaurer pas une ligne de commande,  si votre Hebergement ne le permet pas, contactez votre Hebergeur, il peut certainement l’importer/restaurer moyenant quelques Euro, Je sais OVH propose ce type de service,  1and1  je ne crois pas. Si non c’est que votre Hébergement n’est pas adapté à Magento. Changez d’hebergement.


.7 Editer core_config_Data

il est nécessaire de modifier core_config_Data, que si vous avez restaurez ou copié votre Magento vers un dossier ou nom de domaine différents de l’original

  • Modifier avec PhpAdmin
  • Si vous utlilisez Plesk c’est ici Plesk>  Abonnements> votre site> Sites Web & Domaines>  Bases de données > Admin Web
  • Recherchez la Table :  core_config_Data
  • à la 3iem  et 4iem ligne :
web/unsecure/base_url http://VotreSite/VotreDossierMagento/
web/secure/base_url http://VotreSite/VotreDossierMagento/
  • Cliquez sur Modifier pour corriger.

Mise en Garde : il y a un bug dans  phpMyAdmin : Si vous avez modifié juste avant une autre base MySQL, votre navigateur garde en mémoire la session donc vous empêche de la modifier ! Solution : il faut juste vider l’historique de votre navigateur. Personnellement, j’utilise 5 Navigateurs (Opera, Safari, Chrome, Firefox, Explorer) , comme ça je peux modifier ou comparer plusieurs bases MySQL en même temps sans avoir d’interférence entre les deux :)


   .8 Editer .htaccess

il est nécessaire de modifier .htaccess, que si vous avez restaurez ou copié votre Magento vers un dossier différents de l’original

  • Sur votre Serveur il doit être là : /var/www/vhosts/VotreSite/httpdocs/VotreDossierMagento/
  • Ouvrir le Fichier .htaccess de votre dossier Magento avec un éditeur Geany sous linux, Notepad++ sous Windows..)
  • Rechercher dans ce fichier :  RewriteBase /VotreDossierMagento/
  • Modifiez pour mettre le nom du nouveau dossier



    .9 Editer local.xml

il est nécessaire de modifier local.xml, si vous avez restaurez ou copié vers une base Mysql différente afin d’indiquer à Magento les nouveaux identifiants :Nom de la Base, utilisateur  et Mot de Passe. (si vous ne voyez pas que quoi je parle, allez voir  le Chapitre 4.Copier la base de donner)

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento:
  • LoginDeLABase : Le nom de l’utisateur de votre base MySQL/Magento
  • MotDePasse : Le mot de Passe de l’utilisateur
  • NomDelaBase : LE Nom de Votre nouvelle Base MySQL/Magento
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[localhost]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName



Peut également aussi vous intéresser :


Déplacer – Copier Magento vers un autre Domaine ou Dossier

Pour Copier Votre Magento Il faut :

  1. Copier le dossier qui contient votre Magento
  2. Mettre les droit au nouveau dossier (777 / 755)
  3. Supprimer la cache /VotreMagento/var/cache
  4. Copier la base de donner
  5. Editer core_config_Data
  6. Editer .htaccess
  7. Editer /VotreMagento/app/etc/local.xml

1. Copier le dossier qui contient votre Magento

Plusieurs solutions selon les cas :

  • Copier avec fileZilla en n’oubliant pas de cochez Afficher les fichiers cachés du serveurs sans cela il va vous manquer des fichier. (Solution Lente)
  • En Ligne de Commande dans un terminal ou avec putty.exe (solution Ultra Rapide) avec la commande« cp – r Magento CopieMagento »
    cp -r /var/www/vhosts/votreSiteinternet/httpdocs/Magento  /var/www/vhost/votreSite/httpdocs/CopieDeMagento

ou bien: (c’est pareil)

cd var/www/vhosts/VotreSiteInternet/httpdocs
cp -r magento CopieDeMagento
  • En interface Graphique Copier/Collez :  si votre serveur est accessible avec FreeNx 

2. Mettre les droits au nouveau dossier Magento (777 / 755)

Plusieurs solutions selon les cas :

  • Avec filezilla c’est très long : Bouton droit de la souris sur votre dossier Magento et cochez : « Droit d’accès au fichier » > entrez 755 ou 777 et cocher « Recursion dans les sous dossiers, Appliquer à tous les sous-dossiers  et fichiers
  • Soluttion Ultra rapide ±2 secondes ! En ligne de commande dans un Terminal via interface FreeNx ou putty.exe, tapez : Chmod -R -777 /LeCheminDeVotreDossierMagmento  -Attention ne vous trompez pas vous pourriez planter votre Serveur (ne tapez jamais juste : Chmod -R 755 /)
    Chmod -R 777 var/www/vhosts/VotreSiteInternet/httpdocs/VotreMagento

Ou bien ça c’est pareil:

cd var/www/vhosts/VotreSiteInternet/httpdocs
ls
Chmod -R 777 VotreDossierMagento

Ou bien installer le fichier magento-cleanup.php

A télécharger ici : http://www.magentocommerce.com/wiki/_media/groups/227/magento-cleanup2.zip

Dans le dossier de votre magento, puis exécutez le depuis un Navigateur http://www.VotreSite.xx/votredossierMagento/magento-cleanup.php

(voir Tutoriel : changer les droits du dossier Magento 777 / 755)


3.Supprimer la cache /VotreMagento/var/cache

Indispensable ! Sans cela votre site va garder les anciens dossier, domaine et mémoire.

Plusieurs solutions selon les cas :

  • supprimer avec fileZilla en n’oubliant pas de cochez Afficher les fichiers cachés du serveurs sans cela il va vous manquer des fichier. (Solution Lente)
  • Utilisez magento-cleanup.hph

A télécharger ici : http://www.magentocommerce.com/wiki/_media/groups/227/magento-cleanup2.zip

Dans le dossier de votre magento, puis exécutez le depuis un Navigateur http://www.VotreSite.xx/votredossierMagento/magento-cleanup.php

  • En Ligne de Commande dans un terminal ou avec putty.exe (solution Ultra Rapide) avec la commande« rm – r  » Attention ne vous trompez pas vous pourriez tous supprimer sur votre serveur !
    rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache

Ou bien: (c’est pareil)

cd var/www/vhosts/VotreSiteInternet/httpdocs
rm -r -f VotreMagento/var/cache

Ou bien :

  • Si votre serveur est accessible avec FreeNx
  • Sélectionnez  dans le dossier magento/var/cache et /session
  • Supprimez-les

J’ai un tutoriel sur Comment vider la cache de Magento


4. Copier la base de donner

Plusieurs solutions selon les cas :

  • Avec Pesk  Pour copier la Base sur le Même Serveur, dans le même domaine, dans Plesk il y a un bouton « Copier votre base Mysql » , Pesk>Accédez Domaines >Panneau de Contrôle de votre site > Sites Web & Domaines > Bases de données > « Selectionnez votre Base »>Cliquez Creer une Copie » (C’est pas super Rapide, mais c’est Efficace.)
  • En Ligne de Commande : Très Efficace, permet de copier d’un site a l’autre, d’un Serveur a l’autre très rapidement , suivez le tuto dédié ici
  • Avec la Sauvegarde par Magento : « Quelle Galère, dire que j’ai utilisé cette solution pendant plus d’un an » c’est Lent, Compliqué, et pas fiable ! …Suivre ce tuto ici

   5. Editer core_config_Data

il est nécessaire de modifier core_config_Data, que si vous avez restaurez ou copié votre Magento vers un dossier ou nom de domaine différents de l’original

  • Modifier avec PhpAdmin
  • Si vous utlilisez Plesk c’est ici Plesk>  Abonnements> votre site> Sites Web & Domaines>  Bases de données > Admin Web
  • Recherchez la Table :  core_config_Data
  • à la 3iem  et 4iem ligne :
web/unsecure/base_url http://VotreSite/VotreDossierMagento/
web/secure/base_url http://VotreSite/VotreDossierMagento/
  • Cliquez sur Modifier pour corriger.

Mise en Garde : il y a un bug dans  phpMyAdmin : Si vous avez modifié juste avant une autre base MySQL, votre navigateur garde en mémoire la session donc vous empêche de la modifier ! Solution : il faut juste vider l’historique de votre navigateur. Personnellement, j’utilise 5 Navigateurs (Opera, Safari, Chrome, Firefox, Explorer) , comme ça je peux modifier ou comparer plusieurs bases MySQL en même temps sans avoir d’interférence entre les deux 🙂

J’ai un tutoriel : core_config_data


   6 Editer .htaccess

il est nécessaire de modifier .htaccess, que si vous avez restaurez ou copié votre Magento vers un dossier différents de l’original

  • Sur votre Serveur il doit être là : /var/www/vhosts/VotreSite/httpdocs/VotreDossierMagento/
  • Ouvrir le Fichier .htaccess de votre dossier Magento avec un éditeur Geany sous linux, Notepad++ sous Windows..)
  • Rechercher dans ce fichier :  RewriteBase /VotreDossierMagento/
  • Modifiez pour mettre le nom du nouveau dossier

j’ai fait un Tutoriel sur : Comment Optimiser Magento .htacces , php.ini, my.cnf


    7. Editer local.xml

il est nécessaire de modifier local.xml, si vous avez restaurez ou copié vers une base Mysql différente afin d’indiquer à Magento les nouveaux identifiants :Nom de la Base, utilisateur  et Mot de Passe. (si vous ne voyez pas que quoi je parle, allez voir  le Chapitre 4.Copier la base de donner)

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento:
  • LoginDeLABase : Le nom de l’utisateur de votre base MySQL/Magento
  • MotDePasse : Le mot de Passe de l’utilisateur
  • NomDelaBase : LE Nom de Votre nouvelle Base MySQL/Magento
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[localhost]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName

Copier – Sauvegarder et Restaurer facilement une Base Mysql de Magento

introduction: La base mySQL de Magento grossie assez vite.  la procédure de sauvegarde de Magento est très lente et il n’existe pas de procédure de restauration !  Il faut impérativement trouver des solutions plus efficace.

 La sauvegarde  par Magento devient vite problématique, ralentissement du serveur, voir plantage, etc..

La restauration est tout aussi difficile, si  le Fichier est >2048Mo, on est obligé d’éditer le fichier, le découper, bref… c’est un calvaire 😦

La solution : Avec quelques commandes MySQL à taper dans un terminal ou avec Putty.exe on peut très facilement faire Sauvegarde, Restauration, Copie des bases de données MySQL de Magento en quelques secondes, un vrai bonheur 🙂 


Sauvegarder

la Base MySQL de Magento votre base de données Mysql de Magento en quelques secondes !

Vous devez connaitre vos identifiants base de données : Login, Password et nom de la base de donnés, Ils sont dans le fichier local.xml de magento/app/etc/local.xml
  1. mysqldump -u LoginBase -pMotDePasse  NomBase>/var/www/vhosts/Domaine/httpdocs/magento/var/backups/sauvegarde_import.sql
  • LoginDeLaBase : c’est le nom de l’utilisateur de la base Magento, celui que vous avez crée lors de la création de votre base Mysql
  • MotDePasse : c’est le mot de passe pour accéder a votre base MySQL de Magento,  celui que vous avez crée lors de la création de votre base MySQL   – Remarque : »entre -p et votre MotDePasse  il y a pas d’espace, c’est normal »
  •  NomDeLaBase : Comme sont nom l’indique c’est le nom de votre base Mysql Magento
  • /var/www/vhosts/NomDeDomaine/httpdocs/magento/var/backups  : C’est le chemin ou vous voulez mettres votre Sauvegarde. je conseille de la placer dans un dossier que vous pouvez récupérer en ftp
  • Par exemple : /var/www/vhosts/NomDeDomaine/httpdocs/magento/var/backups
  • sauvegarde_import.sql : Bien évidement le nom que vous voulez donner à votre sauvegarde

  2. Il faut impérativement changer les droits du Fichier de sauvegarde pour qu’il puisse être récupéré, copier en FTP et réutilisable  en restauration.

chmod 777 /var/www/vhosts/NomDeDomaine/httpdocs/magento/var/backups/sauvegarde_import.sql

  3.Compresser votre Fichier, vous pouvez réduire ça taille par x10

gzip -f -9 /var/www/vhosts/NomDeDomaine/httpdocs/magento/var/backups/sauvegarde_import.sql

Restaurer

votre base de données Mysql de Magento en quelques secondes, tapez dans Putty ou un terminal :

mysql -u LoginDeLaBase -p NomDeLaBase < /CheminDeLaSauvegarde/sauvegarde.sql

ou si vous l'avez compressée :
gunzip -f /CheminDeLaSauvegarde/sauvegarde.sql.gz
mysql -u LoginDeLaBase -p NomDeLaBase < /CheminDeLaSauvegarde/sauvegarde.sql

Remarque : Pour utiliser une copie votre Magento dans un autre dossier ou serveur, il va faloir modifier aussi, core_config_data, Local.xml, .htaccess..  j’ai fait un tuto ici..


Copier / Dupliquez

vers une nouvelle base de données Mysql/ Magento.

  1. Créer une base vierge, un utilisateur et un mot de passe  dans votre Serveur : Avec Plesk  : Connectez vous a Plesk >Domaines>Gérer l’hébergement>Sites & Domaines>Bases de données>Ajouter une nouvelle base de données>« NomDeLaBase »
  2. >Ajouter un Nouvel Utilisateur de base de données> « Utilisateur +Mot de passe »
  3. Dans un Terminal ou putty.exe, tapez :
    mysql -u LoginDeLaNouvelleBaseVierge -p NomDeLaBaseNouvelleBaseVierge < /CheminDeLaSauvegarde/sauvegarde.sql
    
    ou si vous l'avez compressée :
    gunzip -f /CheminDeLaSauvegarde/sauvegarde.sql.gz
    mysql -u LoginDeLaBase -p NomDeLaBase < /CheminDeLaSauvegarde/sauvegarde.sql

Remarque : Pour utiliser une copie votre Magento dans un autre dossier ou serveur, il va falloir modifier aussi, core_config_data, Local.xml, .htaccess..  j’ai fait un tuto ici..


Créer un Script pour Automatiser la sauvegarde.

Pour exécuter ces quelques lignes , le plus simple est de faire un script  comme ça

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "sauvegarde en cours..."
mysqldump -u Login -pMotdePasse NomBase >/VotreChemin/Sauvegarde.sql
chmod 777 /VotreChemin/Sauvegarde.sql
gzip -f -9 /VotreChemin/Sauvegarde.sql

echo "Terminée"

…Ici un tuto comment faire et exécuter un script simple


Sauvegardes directement par Plesk :

Utilise dans certains cas, car ce n’est pas vraiment un sauvegarde, c’est plutôt une copie :

  • Avec Pesk : Pour copier la Base sur le même serveur et même domaine,  il y a un bouton « Copier votre base Mysql » ,  Dans Pesk>Accédez Domaines >Panneau de Contrôle de votre site > Sites Web & Domaines > Bases de données > « Sélectionnez votre Base »>Cliquez Créer une Copie…  « …C’est pas rapide, mais c’est Efficace.

Remarque : Pour utiliser une copie votre Magento dans un autre dossier ou serveur, il va falloir modifier aussi, core_config_data, Local.xml, .htaccess..  j’ai fait un tuto ici.


Planifier des Sauvegardes Magento :

L’idéal est de créer une tache planifiée (Cron) pour exécuter ces quelques lignes automatique. Moi j’ai Horreur de Cron, alors j’utilise Tâche Planifié De Gnome avec FreeNx, 

Voir ce tutoriel : Comment créer un script  sauvegarde de la base mysql de Magento

installer Magento sur votre Serveur / Hebergement

Nous supposons que votre serveur est prêt pour recevoir Magento  (si non voir notre
Tuto :  Serveur ideal pour Magento de A à Z
)

1) Téléchargez Magento chez Magento : http://www.magentocommerce.com/download

________________________________________________________

2) décompressez les fichiers et copiez le dossier Magento sur votre Site.

– Soit en Ftp via FileZilla, mais c’est long (sans oublier de cochez « Forcer l’affichage des fichiers cachés)

– Soit copier/coller avec via interface FreeNx directement là (en 2 minutes) :

var/www/vhosts/VotreSiteInternet/httpdocs

________________________________________________________

3) Mettre les droits lectures/écritures en 755  (ou 777 en mode tests uniquement)

Avec filezilla c’est très long : Bouton droit de la souris sur votre dossier Magento et cochez : « Droit d’accès au fichier » > entrez 755. et cocher « Recursion dans les sous dossiers, Appliquer à tous les sous-dossiers

Ou en ligne de commande dans un Terminal via interface FreeNx ou putty.exe

Tapez : (ça dire 3 secondes !) Chmod -R -755 /CheminDossierMagmento exemple :

Chmod -R 755 var/www/vhosts/VotreSiteInternet/httpdocs/magento

J’ai un tutoriel sur les droits ici : Comment mettre les droit du dossier-magento 777 755

_______________________________________________________

4) Créer une base de données Mysql vièrge et un utiliseur Mysql + mot de passe sur votre Serveur.

– Si vous avez Plesk ça va prendre 10 secondes : Connectez vous a votre Serveur via Plesk

– Accédez Domaines >Panneau de Contrôle de votre site > Sites Web & Domaines > Bases de données > Ajouter une nouvelle Base de données

-Donnez un Nom a la base : pour l’exemple on va l’appeler BaseMagento

+Ajouter un nouvel utilisateur de base de données : pour l’exemple on va l’appeler : user

et enfin le mot de passe on va l’appeler : passe

Et voila la base est crée 🙂

_______________________________________________________

5)  On termine l’installation de Magento :

On ne peut pas faire plus simple: tapez http://votreSite/magento  

Suivez les instructions a l’écran .. exemple à partir de la 2iem Minutes de cette vidéo:  http://www.youtube.com/watch?v=V2SffdBUbm8

Choisissez :

Locale : Français (france)

Time Zone : Romance Standard Time (Europe/Paris)

Default currency : euro

>Page Suivante

Host* : vous laissez localhost

Databse-Name : le nom de votre base mysql dans nom exemple BaseMagento

User Name : le nom de l’utilisateur de la base Mysql dans nom exemple : user

Laissez le reste, vous pouvez juste cocher Use Web Server (apache) Rewrites

>Page Suivante

Nom d’utilisateur, et mot de passe pour accéder a l’admin de magento.

>Continue

Votre Admin est là : http://votreSite/magento/admin

Votre site est à : http://votreSite/magento/

installation terminée 🙂

il n’y a plus qu’a suivre a l’écran … 🙂

D) Vérifiez que votre Serveur est compatible Magento (Ubuntu 12.04)

Ubuntu 10.04 à tout ce qu’il faut pour Magento  voir mon article complet(serveur ideal de A à Z )

Nous allons vérifier que votre serveur supporte Bien Magento :

1) Récupérez  le fichier magento-check.zip que va testez votre serveur ici : http://www.magentocommerce.com/knowledge-base/entry/how-do-i-know-if-my-server-is-compatible-with-magento

2) Décompressez le puis, copiez le en FTP sur votre serveur le fichier  magento-check.php

3) Executez-le à partir d’un navigateur : http://www.Votresite.fr/magento-check.php

Il doit apparaître :


Votre serveur ne répond pas aux exigences suivantes afin d’installer Magento
Les exigences suivantes échoué, s’il vous plaît contactez votre fournisseur d’hébergement afin de recevoir de l’aide à satisfaire aux exigences du système de Magento:

  • Il vous manque l’ mcrypt extension de

Les exigences suivantes ont été atteints:

  • Vous avez PHP 5.2.0 (ou supérieur)
  • Mode sans échec est hors
  • Vous avez MySQL 4.1.20 (ou supérieur)
  • Vous avez le curl d’extension
  • Vous avez la liberté d’extension
  • Vous avez le gd d’extension
  • Vous avez le hachage d’extension
  • Vous avez le iconv d’extension
  • Vous avez le pcre extension de
  • Vous avez le PDO d’extension
  • Vous avez le pdo_mysql d’extension
  • Vous avez le simplexml d’extension

il vous manque normalement : mcrypt

4) pour l’installer c’est très simple, cherchez mcrypt dans la Logithèque Ubuntu : MCrypt module for php5

Puis tapez dans un Terminal ou redémarrer votre Serveur :

sudo /etc/init.d/apache2 restart

En ligne de commande avec Putty.exe ou un terminal

sudo apt-get install php5-mcrypt

puis redémarrage d’Apache

sudo /etc/init.d/apache2 restart

soit complèment le Serveur ( normalement ce n’est pas nécessaire )

reboot

5) S'il vous manque curl :

sudo apt-get install php5-curl;
sudo /etc/init.d/apache2 restart;

6) relancez dans un navigateur de Test de compatibilité à partir d’un navigateur : http://www.Votresite.fr/magento-check.php

Voila votre serveur est opérationnel 🙂

 

_________________________________________________________________________

Penser a vérifier le propriétaire du dossier www  (/var/www)

sous Plesk pas utile

sous LAMP : penser a changer root pas le bon propriétaire

Exemple :

sudo chown utilisateur:MotDePasse /var/www

 

C2) Permuter entre deux serveurs avec l’IP FailOver OVH sous Plesk

Si vous changez les DNS de vos noms de domaines pour basculer vers un nouveau serveur, la diffusion prend 48H pendant ce temps vous ne savez pas sur quel serveur vous serrez.

Grace à Ip FailOver d’OVH, vous pouvez permuter d’un serveur à l’autre en quelques Minutes. OVH va vous fournir une adresse IP que vous pourrez basculer d’un serveur a l’autre en quelques minute.
+ d’info: http://www.ovh.com/fr/serveurs_dedies/ip_FailOver.xml

Si votre site n’est pas encore en production, ça va simplifié les choses,  mais si comme moi, vos sites sont déjà actifs, il faut prendre quelques précautions car la première fois  ça prendra 48H après vous pourrez basculer de l’un a l’autre en quelques minutes.

Mise en place :

1 ) Avec le Manager OVH créez une IP FailOver qui servira d’adresse IP pour vos domaines

Manager OVH>serveur>service>IP FailOver>CREER

2) Pointez l’Ip FailOver vers le server N°2 (celui qui n’est pas encore en production)

Manager OVH > serveur>service > IP FailOver>Basculer une IP Fail-Over vers un autre serveur

3) Ajouter dans Plesk  des 2 serveurs l’adresse IP FailOver :

Plesk > Outils et Paramètres > Gestion des Adresses IP > ajouter une adresse !

si vous mettez le sous masque identique a votre IP de Base votre serveur va PLANTER au prochain démarrage Il faut ajouter derrière l’ip /32

IP >    xxx.xxx.xxx.xxx/32  

le /32 va ajouter 255.255.255.255   c’est normal.

4) Si votre domaine n’est pas encore crée :

Dans Plesk : Allez > Domaine :il est indiqué « Afin d’ajouter un domaine pour héberger votre propre site Web : créer votre abonnement personnel en premier »  

Cliquez sur  Ajouter un domaine ou  créer    puis  sélectionner votre Ip-FailOver (voir ci-dessous)

Pour info Plesk a crée un dossier : var/www/vhosts/VotreSiteInternet/httpdocs

5) paramétrer votre domaine pour utiliser votre IP-Failover :

Dans Plesk >  l’espace du domaine « Accès à l’hébergement Web » sélectionnez l’adresse IP FailOver.

Pointer vos noms de Domaine vers cette nouvelle IP (DNS) .. Attention la première fois ça peut prendre 24/48H de propagation… après vous pourrez permuter en moins de 10 minutes.

6) Pour permuter les serveurs rien de plus simple :

-Dans Plesk (du serveur de destination)  >  l’espace du domaine « Accès à l’hébergement Web > sélectionnez l’adresse IP FailOver.

-Dans Manager OVH serveur > service > IP FailOver > Basculer une IP Fail-Over vers un autre serveur.

Terminé 🙂


Si vous n’avez pas de ip FailOver, j’ai aussi ce tutoriel ici : Permuter entre deux serveurs magento

Serveur idéal pour Magento de A à Z (sous Ubuntu 10.04 + Plesk OVH)

 Comment héberger Magento ?

  • Hébergement Mutualisé : Au départ, j’ai essayé d’installer Magento  sur Hébergement Mutualisé standard (de type 1and1) qui coute quelques Euros par mois. Je me suis rendu compte immédiatement que c’était presque impossible,  en tout cas inexploitable, des lenteurs à chaque requête, erreur « Timeout » etc…
  • Serveur Virtuel: J’ai donc pris un Serveur Virtuel (toujours 1and1) sous Centos + Plesk. c’est pas cher, ça m’a bien servie pour apprendre et démarrer mon site e-commerce sous Magento. Cette solution est économique (19€/mois pour 4Go/40Go) . Mais 1and1 c’est Zero Service, le support ne vous aidera pas, donc pour installer les extension Mysql, les bonnes versions, les reglages…  si vous n’êtes pas connaisseur, c’est le parcours du combatant.
  • Serveur Dédier OVH 4Go/500Go (49€/mois): Enfin un Serveur qui va bien ! Il faut quand même le paramétrer, le support technique OVH répond au question (ils ont des techniciens super aimable, mais pas tous) , donc après quelques jours on arrive avoir un bon Serveur qui tourne, c’est ce Serveur que avons utilisé en Production jusqu’a  500 visites jours et 3500 pages en moyens jours.
  • Mais, après 1 ans, notre base MSQL a grossit et des lenteurs commencent à ce faire sentir, c’est la mémoire vive qui est insuffisante, donc nous avons changé pour un Serveur Dédier OVH 16Go/2x 120GO SSD
  • Serveur Dédier OVH 16Go/2x 120GO SSD (69€/mois): Le serveur idéal pour Magento.  j’ai choisi l’abonnement Serveur dédié OVH  Superplan 2011 avec Ubuntu 10.04 server + Plesk 10.3 , rapide, avec suffisamment de mémoire pour paramétrer la cache de Mysql et de php.

A ) Choix de la Distribution

Ubuntu 10.04 server + Plesk 10 – Bonne communauté Francophone, version très complète avec tous ce qu’il faut pour Magento. bien-sur ça fonctionne aussi sous Centos (distribution souvent proposé) mais il y a + d’extension à ajouter ou a mettre à jour l’utiliser avec Magento.  +Plesk 10  bien pratique pour administrer facilement votre Serveur, Base Mysql, Ftp et vos sauvegardes.


B ) Paramétrage du Serveur OVH pour Magento

Putty : Utilisez PUTTY pour acceder à votre Serveur, indispensable, c’est la console pour tapez des instructions sur votre serveur.

– Installer sur votre PC (Local) l’application « putty.exe » (vous trouverez ça sous google)

connectez-vous avec putty, vos identifiants ont été fournis par OVH. iP/Login/password.

B1) Votre licence Plesk est-elle enregistré ?

-Connectez vous à Plesk avec vos identifiants fournis par votre Hébergeur.

Si au démarrage Plesk vous demande d’enregistrer/installer la licence procédez ainsi : voir tuto ici

B2) Votre Plesk est-il à jour ?

Autant commencer avec un serveur à jour.

Voici un petit tuto ici Comment mettre à jour votre Plesk avant de commencer à configurer votre serveur

B3) Installer une interface Graphique Gnome

Pour faciliter la vie surtout si vous ne connaissez pas bien les lignes de commandes linux.

Tapez : sudo apt-get install ubuntu-desktop

Suivez les instructions à l’écran,  si dans un cadre Bleu, il vous demande d’écraser  des fichiers de configurations, répondez NON, jusque là rien de bien compliqué.

B4) FreeNX : installer une connexion a distance

un peu comme Terminal serveur de Windows mais pour linux pour acceder au serveur dans un environement Graphique, FreeNx remplacera la console austère putty par une belle page comme Windows, néanmoins les lignes de commandes s’avère souvent indispensable et bien plus puissante que l’interface graphique.

Explication  d’installation de FreeNX voir: Comment installer NX NO-Machine Freenx avec un serveur ubuntu-10-04

B5) Quelques Utilitaires pour facilité la vie

Maintenant qu’on utilise l’interface graphique gnome Ubunntu avec FreeNx on va en profitez pour installer très simplement les outils indispensables :

Dans Ubuntu cliquez sur : Applications >Logithèque Ubutnu : rechercher :

« planifiées » pour installer Tâches planifiées (gnome-schedule) Super pratique pour gérer vos taches crons

installez l’éditeur Geany  indispensable pour editer un fichier de configuration, comme  my.cnf par exmple etc…

installez aussi Filezilla si vous avez de besoin de teléchargement direct entre serveur.

Dans Filezilla, n’oubliez pas dans le menu >serveur de cocher « Forcer l’affichage des fichiers cachés »  afin de voir et de copier aussi les fichiers cacher comme .htacces

mais aussi : nautilus-terminal indispensable  : (nécessite quelques manip)  bouton-droit sur Menu d’ubuntu> Editer les Menus>Outils système>cochez Editeur de configuration 

Voir : http://marcet.technofil.fr/2009/06/09/nautilus-open-terminal/  et http://www.simple-linux.com/fr/ajouter-un-terminal-dans-nautilus-avec-nautilus-terminal/

Dé-installer/supprimer tout ce qui na rien a faire sur un server :

Solitaire, Démineur, etc.. n’en retirez pas trop..   ne retirez pas ceux qui vous propose de supprimer des librairies supplémentaires ou qui sont lié à d’autres applications, dans le doute,  laissez, ça évite des erreurs.


C1) PLESK 10

C’est avec plesk que l’on va paramétrer les noms de domaines, emails (éventuellement mais je ne le conseille pas), base Mysql, sauvegarde s etc…

C2) Ajouter une IP FailOver. Ovh vous permet d’ajouter gratuitement une IP supplémentaire que vous pourrez basculer d’un serveur a un autre en quelques minutes. Ce n’est pas indispensable, mais c’est tellement pratique. imaginez que vous ayez un Serveur de Production avec votre site, et un Serveur de Test ou de secours.  en cas de panne vous pourrez très facilement basculer d’un serveur a l’autre.

Autant mettre immédiatement en place une IP FailOver, car si le site est déja en production la mise en place peut perturber votre site.  Voici un tuto a suivre ici…

C3) Gestion des Noms de Domaines et Emails :

 Votre Serveur et Plesk gèrent très bien les noms de domaines et vos Emails, mais je ne vous conseille pas de le faire.

Pourquoi ?  Imaginez que votre serveur soit planté ! Non seulement votre site en a l’arrêt, mais en plus vous ne recevez plus aucun email voir même vous avez perdu tout vos emails !! aïe, aïe, aïe …

-Pour  transférer votre site vers un autre serveur il faudra également transférer  et re-créer tous vos emails,  c’est beaucoup de boulot qui pourrait être évité.

-Et les réglages de vos Serveurs sera hyper simplifié

La solution :  Laisser votre Hebegeur s’occuper de vos émails et nom  de domaines, OVH comme 1AND1 font ça très bien. voir mon tutoriel  : DNS nom de domaine & email ici 

C4) créer votre domaine sous Plesk : 

automatiquement un dossier sera créé :  var/www/vhosts/VotreSiteInternet/httpdocs

Pour cela dans Plesk : Allez dans Domaine :il est indiqué « Afin d’ajouter un domaine pour héberger votre propre site Web : créer votre abonnement personnel en premier » ou bien cliquez sur Ajouter un domaine et Suivez les instructions, c’est très simple…

Si vous utilisez une IP Failover (comme je l’ai expliqué ci-dessus) pensez a ajouter l’IP-FailOver puis pointer votre domaine dessus   Comment créer une IP FailOver…

C5) Créer un Compte FTP afin d’effectué des transferts vers votre siteWeb.

Dans Plesk > Domaines > Ouvrir Panneau de Contrôle (de votre domaine) > Ste Web & Domaines > Accès FTP > Cliquez Créer un compte FTP > Saisissez un nom de compte (Login) et u mot de passe (password)

Pour se connecter en FTP il suffira d’installer FileZilla sur votre Pc de renseigner

Hote : LeNomDeVotreDomaine  > Type d’authentification : Normal > Identifiant : Saisir l’identifiant que vous venez de creer > Mot de passe : saisir votre mot de passe que vous venez de créer.

Dans FileZilla pensez a cocher dans le menu > Serveur > Forcer l’affichage des fichiers cachée  afin de voir de voir entre autre .htaccess


D) Vérifiez que votre Serveur est compatible Magento

Nous allons vérifier que votre serveur supporte bien Magento, Ubuntu 10.04 à tout ce qu’il faut pour Magento, il faut juste installer MCrypt module for php5,  Comment Vérifier la compatibilité de Magento sur un Serveur :


E) installer Magento sur votre Serveur.

E1) Si votre but est de mettre un Magento vierge, rien de plus simple Comment installer Magento sur un serveur


F) Transférer / Copier votre Magento sur le  serveur.

F1) Copier la Base de données :

j’ai fait plusieurs explication pour tranférer la base de données MySQL de Magento, selon votre cas ici :

F2) Copier Le dossier, et mettre à jours paramètre:


G) Optimiser votre serveur Magento, votre hébergement pour Magento

Les sujets qui vont êtres abordés :

  • .htaccess
  • php.ini
  • php_admin_value memory_limit,
  • php_value max_execution_time
  • my.cnf

j’ai fait un Tuto Comment Optimiser Magento  :


H) Créer un Script de Sauvegarde de la Base Mysql de Magento

j’ai fait un Tuto Comment créer un Script de sauvegarde pour Magento


I) Créer des taches Planifiées pour sauvegarder Magento Mysql tout les soirs..

j’ai fait un Tuto Les taches Planifiées…


j) Créer des Sauvegardes Planifiés avec Plesk

voir ce  Tutoriel planifier un sauvegarde d un serveur plesk


K) Créer un Script de Sauvegarde du Dossier FTP de Magento.

j’ai fait un Tuto : Comment créer un Script-pour-sauvegarder-en-fpt


L) Modifier le Chemin du Back Office /admin/ de Magento

Pour des raisons évidente de Sécurité il fait changer le Chemin d’accès a l’admi de magento

Il faut modifier un ligne dans le Fichier loca.xml , j’ai fait un Tutoriel d’explication : Comment Modifier le Chemin du Back Office /admin/ de Magento ici


M) Nettoyez les Log, Optimiser et réduire

la Base Mysql Magento 

j’ai fait un Tuto : Comment nettoyer les Log de Magento facilement


N) Lancer en Cron.php ou Cron.sh de Magento et Planifier

j’ai fait un Tuto : Comment Planifier et exécuter cron.php et cron.sh de Magento


O) Pensez à Vider votre Corbeille Partition 2 /var .Trash-0 sous Linux

j’ai fait un Tuto : Comment faire de la place sur le disque dur de votre serveur


P) Script Nettoyer, purger Magento Régulièrement.

j’ai fait un Tuto : Comment Faire un script des taches régulières pour Magento


Q) instructions et Script Mysql pour Magento

j’ai fait un Tuto : utilisation des lignes commandes mysql pour magento


R) Les quelques lignes de commandes Linux indispensables a connaitres

ici : linux quelques lignes de commandes à connaitre:


S) Automatiser la copie de la base MySQL Magento entre deux Serveurs 

j’ai fait un tuto : Comment copier base mysql Magento entre deux serveurs


T) Utiliser une Base MySQL Magento distante ou sur un autre Serveur

j’ai fait un tuto : Comment connectez Magento à une Base de données Mysql d’un serveur distant.


U) Cloner Tout Magento Base + Dossier entre deux serveurs :

j’ai fait un tuto : Comment Copier Magento Base + Dossier + Modification Core_config_data et .htaccess et local.xml automatiquement



V) Purger la mémoire de votre Serveur régulièrement

Purger la cache mémoire RAM d’un Serveur linux.

Dans certains cas il peut être utile de vider la cache en mémoire RAM de votre serveur Linux, ça peut libérer jusqu’à 70% de mémoire Vive!

Pour forcer le noyau à abandonner la page de cache, inode dentry caches sans redémarrage. il faut d’abord être sur que toutes les écritures disques en caches soit écritent, avec la commande SYNC puis utilisez la commande  drop_caches

j’ai fait un tuto https://erickranich.wordpress.com/2011/12/13/purger-la-cache-memoire-ram-dun-serveur-linux/ 


W)…S’il vous manque quelques Choses, Proposez moi 


X)


Y)


Z)