e2oir Posté(e) le 6 juillet 2013 Partager Posté(e) le 6 juillet 2013 Bonjour à tous, J'ai découvert sur mon Synology le "planificateur de tâches" et le script défini par l'utilisateur. N'étant pas du tout familier des environnements Linux/Shell je voudrais savoir s'il était possible de lancer un script PHP directement à partir de cette fenêtre. J'ai essayé de faire ça de manière barbare : ça ne fonctionne pas... Dois-je passer obligatoirement par un script .sh qui lui-même appellera ma page .php ? Dans ce cas à quoi doit ressembler ce script ? Merci d'avance pour votre aide ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 6 juillet 2013 Partager Posté(e) le 6 juillet 2013 1e chose, dans ton script, il faut donner le chemin absolu de chaque binaire appeler Ensuite, rajoute une sortie vers un log dans le plannificateur de tache (genre rajoute >> /volume1/web/out.txt) Enfin, hésite pas à poster ton script, on se fera une joie de te le décortiquer (Je sent que CoolRaoul est pas loin ) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
e2oir Posté(e) le 6 juillet 2013 Auteur Partager Posté(e) le 6 juillet 2013 Merci ! C'est donc possible de lancer un script php directement, plutôt une bonne nouvelle ! Il s'agit de relever le nombre de mails "non-lus" dans une première boite et d'envoyer une notification à une autre boite pour indiquer le nombre de non-lus. <?php function count_read() { $file = 'count.txt'; $fp = fopen ($file, r); $n = fread($fp, filesize('count.txt')); fclose ($fp); return $n; } function count_write($n) { $fp = fopen ("count.txt", w); if (fwrite($fp, $n) === FALSE) { exit; } fclose ($fp); } $mailbox = imap_open("{imap.gmail.com:993/imap/notls/norsh/ssl/novalidate-cert}INBOX","*****@*******","*********"); if($mailbox) { $nMessages = count(imap_search($mailbox, 'UNSEEN')); if($nMessages > count_read()) { mail('*****@*******', 'Mails à lire : ['.count_read().']', 'Ce message automatique a été envoyé à partir de Synology.'); } count_write($nMessages); } imap_close($mailbox); ?> Si je comprends bien, quand tu parles de chemin absolu, il s'agirait de mettre pour "count.txt" : "/volume1/web/count.txt" ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 6 juillet 2013 Partager Posté(e) le 6 juillet 2013 Par exemple oui, il faut le faire pour toute référence a des fichiers "durs" (qui ne sont pas des variables) Je parlais surtout des commandes, si il y en avait dans ton script, mais vu qu'il n'y a que tu php, tu devrais pas en avoir besoin Je pense qu'il faut juste préciser au planificateur où se trouve php Rajoute en tout début le chemin de l'exécutable php : "/usr/bin/php -f /volume1/web/mail.php" Et rajouter une sortie de log : /usr/bin/php -f /volume1/web/mail.php >> /volume1/web/out.txt 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
e2oir Posté(e) le 6 juillet 2013 Auteur Partager Posté(e) le 6 juillet 2013 Merci beaucoup bud77 pour ton aide ! Tout fonctionne maintenant parfaitement avec le chemin de l'exécutable php 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azimut2000 Posté(e) le 26 juillet 2013 Partager Posté(e) le 26 juillet 2013 Hello ! Par exemple oui, il faut le faire pour toute référence a des fichiers "durs" (qui ne sont pas des variables) Je parlais surtout des commandes, si il y en avait dans ton script, mais vu qu'il n'y a que tu php, tu devrais pas en avoir besoin Je pense qu'il faut juste préciser au planificateur où se trouve php Rajoute en tout début le chemin de l'exécutable php : "/usr/bin/php -f /volume1/web/mail.php" Et rajouter une sortie de log : /usr/bin/php -f /volume1/web/mail.php >> /volume1/web/out.txt Je suis en plein dedans... J'ai installé "Tiny Tiny RSS" dans mon dossier "web"; pour lancer la MaJ des articles, il faut lancer le fichier "update.php" qui est à la racine du dossier de ttrss. En indiquant dans un terminal - PuTTY - la commande "/usr/bin/php /volume1/web/10/Tiny/update.php --feeds > /volume1/web/10/Tiny/ttrss_update.log 2>&1;" tout fonctionne bien... Mais pour cela, il ne faut pas être "root" (php n'aime ce mec ;-) ) [ ce qui au passage, me fait douter que la copie écran de "e2oir" soit bonne: le script php est lancé en "root" ] J'indique cette même ligne dans le planificateur de tache avec le même user qui fonctionne sous PuTTY (admin) et là... plus rien ne fonctionne !!! Quelqu'un a une idée ??? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 juillet 2013 Partager Posté(e) le 27 juillet 2013 Pour TTrss, c'est un problème tout autre Il y a un post dédié dans la partie "package fournis par synocommunity" que j'ai moi même crée, et qui contient la solution dans les derniers posts 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azimut2000 Posté(e) le 27 juillet 2013 Partager Posté(e) le 27 juillet 2013 Merci Bud pour la piste, mais j'ai vraiment l'impression que le planificateur de tache... c'est pas vraiment ça !!! Mais quand on voit cela : tu te poses quand même quelques questions... (NB: j'ai quand même vérifié tous mes "caractères bizarres" et autres erreurs de jeunesse, mais rien trouvé d’exceptionnel... je me suis donc inspiré de et de ce qui se racontait là : http://forum.synology.com/enu/viewtopic.php?f=190&t=69765 - en même temps, je n'avais pas vu ces topics ) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 juillet 2013 Partager Posté(e) le 27 juillet 2013 Lorsque tu lances ton script à la main, tout fonctionne ? (avec le user root) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
djconcept Posté(e) le 14 décembre 2016 Partager Posté(e) le 14 décembre 2016 Bonjour, J'ai lu attentivement, tout ce que je pouvais trouver sur le sujet, je pense avoir appliqué l'ensemble des conseils lus à droite comme à gauche, mais je reste avec un problème. Voici donc le script que je tente d'exécuter: /usr/bin/php -f /volume1/web/cron/requestdata.php5 >> /volume1/web/out.txt Dans mon out.txt j'ai ceci: Fatal error: Call to undefined function mysql_connect() in /volume1/web/cron/requestdata.php5 on line 10 et voici ce que j'ai à la ligne dite: $link = mysql_connect($serveur, $login, $pass) or die("Erreur de connexion au serveur MySql"); Pour info, lorsque j’exécute le fichier requestdata.php5 directement avec mon browser, tout fonctionne parfaitement. Pouvez-vous m'orienter, j'avoue butter sur ce problème depuis quelques temps déjà. Merci d'avance pour votre aide! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PascalWMR Posté(e) le 1 mai 2017 Partager Posté(e) le 1 mai 2017 (modifié) Bonjour J'ai eu à faire au même problème (script php qui s’exécute depuis un navigateur mais pas depuis une tâche planifiée) et j'ai trouvé la solution la ligne de commande de la tâche planifiée ne doit pas être /usr/bin/php -f /volume1/web/cron/requestdata.php5 >> /volume1/web/out.txt mais, si vous avez php 5.6 /usr/local/bin/php56 -f /volume1/web/cron/requestdata.php5 >> /volume1/web/out.txt Cordialement Pascal Modifié le 1 mai 2017 par PascalWMR 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiwiLAbruti Posté(e) le 2 mai 2017 Partager Posté(e) le 2 mai 2017 Le plus simple est d'ajouter un shebang avec env (pour la portabilité) au début du script PHP : #!/bin/env php <?php ... ?> Ainsi, la ligne de commande se réduit à : /volume1/web/cron/requestdata.php5 >> /volume1/web/out.txt 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.