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 ! :)
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)
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
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.
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é).
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.
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
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.