Exécuter une commande Symfony en cron sur un serveur mutualisé OVH

Programmer une tâche cron basée sur un simple fichier PHP est assez simple et c'est très bien expliqué dans les différents tutos OVH. Mais lorsque l'on veut utiliser une commande symfony, ça se corse un peu et ça m'a valu pas mal de recherches avant de trouver la solution que je partage ici.

Des adresses absolues

La première chose dont vous aurez besoin sera d'utiliser des adresses absolues vers vos fichiers et/ou dossiers dans les commandes. Pour cela vous aurez besoin de votre nom d'utilisateur OVH pour votre hébergement. Il s'agit du préfixe de votre login FTP. Lorsque vous créez un utilisateur FTP pour votre site, OVH vous impose un préfixe. C'est votre nom d'utilisateur.

Ainsi, l'adresse absolue vers le dossier de votre compte est

/home/votre-nom-d-utilisateur/

Cette adresse correspond au "./" de votre hébergement

Pour exécuter PHP

Pour exécuter un script PHP depuis un fichier bash, vous aurez également besoin de l'adresse absolue de l’exécutable PHP sur le serveur.

/usr/local/php7.3/bin/php

Attention /php7.3 doit correspondre à la version de php de votre serveur

Créer le fichier bash

#!/bin/bash
/usr/local/php7.3/bin/php /home/votre-nom-d-utilisateur/chemin-vers-votre-dossier-projet-symfony/bin/console votrecommande

Enregistrez ce fichier avec l'extension .sh et mettez le dans un dossier CronJobs par exemple.

Attention : si le nom de votre commande comporte des signes de ponctuation comme ":" par exemple (genre check:system), renommez la en enlevant les ":" (genre checksystem). Les commandes ne fonctionneront pas sur le serveur si vous laissez les ":".

Rendre le fichier exécutable

Sur votre serveur rendez ce fichier exécutable (CHMOD 755)

Avec un FTP comme filezilla, il suffit de faire un clic droit sur le fichier pour accéder à ses droits et les changer.

Programmer la tache Cron

Sur votre interface manager OVH, créez une tache Cron en choisissant votre fichier nom-du-dscript.sh et "Autre" dans les langages.

Tuto ovh ici

Une fois ceci en place, votre commande symfony pourra s'exécuter automatiquement (pratique pour des backups par exemple)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *