Bonjour !

J'ai un site basé sur Cakephp 3 sur un mutualisé OVH.
J'ai deux scripts shell à exécuter dans tes tâches CRON. Le seul problème c'est qu'OVH n'autorise que les fichiers PHP pour définir une tâche dans son panel admin.
Du coup j'ai essayé de lancer une commande via SSH mais ça ne semble pas fonctionner... Voici ce que j'ai tenté :
crontab -e 0 cd /home/site/public_html/app && bin/cake myshell

J'obtiens une erreur en me disant que crontab n'est pas défini. Et je tente avec sudo j'obtiens "can't stat etc/sudoers" et "no valid sudoers sources found".

Des idées?

Merci ! :)

15 réponses


Huggy
Réponse acceptée

Désolé , j'ai cru que cake était un binaire mais c'est en fait un shell qui lance cake.php en mode phpcli
tu trouveras ici les infos sur phpcli
pour ta version php 5.6, ça devrait être /usr/local/php5.6/bin/php
il faut modifier le fichier bin/cake pour mettre le bon chemin

...
exec /usr/local/php5.6/bin/php "$CONSOLE"/cake.php "$@"
exit

et si on veut lancer cake.php directement

#!/usr/local/php5.6/bin/php -q
<?php
...

Bonjour,
L'interface d'OVH permet de lancer des batch shell, il suffit de mettre autre plutot que php
bien sûr ton script doit avoir les droits d'exécution et être formaté UNIX (lf et non pas crlf)

stada
Auteur

Bonjour,

Merci de l'info. Et si je sélectionne directement le fichier Shell : src/Shell/FichierShell.php pour la tâche Cron il va le prendre en compte de la même manière que la commande bash?

je pense qu'en créant un fichier .sh executable

#!/bin/bash
cd /chemin_absolu_myshell 
/chemin_absolu/bin/cake myshell myparam

le chemin absolu, tu peux l'avoir en tapant pwd
Je ne connais pas assez bien Cakephp pour savoir ce que fait le binaire cake

stada
Auteur

Ah oui je vois. Merci du conseil je vais essayer! J'ai mis les droits 704, tu crois que ça suffira?

Bonjour.
Un fichier sh ne change rien s'il ne peut définir que des fichiers php pour utiliser les tâches cron.
Il n'a d'après la documentation de OVH pour les hébergements mutualisés, que la possibilité d'utiliser les tâches cron que depuis son manager, il lui est donc inutile de créer un script dans un fichier sh.
Par contre stada, n'oublies pas une chose qui est indiqué dans la documentation :

À savoir : vous pouvez exécuter une tâche, au maximum une fois par heure.

stada
Auteur

Bonjour,
Merci pour la précision.
Du coup quelle serait la solution pour exécuter ces commandes si le fichier sh ne convient pas?

Merci :)

Du coup quelle serait la solution pour exécuter ces commandes si le fichier sh ne convient pas?

Commences déja par dire ce à quoi va servir tes deux tâches et si elles sont liées, c'est à dire si tu y fait appel en même temps (si elles se déclenchent à la même heure et avec la même périodicité).

stada
Auteur

Une tâche vérifie l'état d'une transaction et l'autre envoie une notification. Elles peuvent être décalées d'une heure chacune ça ne pose pas de problème.

Les fichiers .sh fonctionnent très bien en tache cron, même pour les hébergements 'perso' (je fais mes sauvegardes comme ça)
lorsqu'on crée une tache, c'est l'heure de la création qui fixe les minutes et la tache ne peux s'exécuter qu'une fois par heure au maximum.
Rien n'empêche de recréer une autre tache qui fait la même chose X minutes après.

Les fichiers .sh fonctionnent très bien en tache cron, même pour les hébergements 'perso' (je fais mes sauvegardes comme ça)

Dans ce cas là je n'ai rien dit, c'est juste qu'il avait annoncé :

Le seul problème c'est qu'OVH n'autorise que les fichiers PHP pour définir une tâche dans son panel admin.

stada
Auteur

J'obtiens une erreur dans les logs:
line 2: bin/cake: Permission denied

Les droits sont à 715.

Tu parles des droits de ton fichier .sh
il faut regarder aussi les droits du fichier binaire cake
sinon 715 c'est ok

stada
Auteur

J'ai bien suivi ton conseil et j'ai mis les bons droits pour le binaire cake. Voici les erreurs que j'obtiens à présent :
[2016-04-04 09:33:03] <b>Warning</b>: Unexpected character in input: '\' (ASCII=92) state=1 in <b>/home/www/site/bin/cake.php</b> on line <b>33</b><br />
[2016-04-04 09:33:03] <b>Parse error</b>: syntax error, unexpected T_STRING in <b>/home/www/site/bin/cake.php</b> on line <b>33</b><br />

Ma version globale PHP est 5.6.

stada
Auteur

exitcode 0 ! Ca a l'air tout bon, je te remercie pour ton aide! :)