Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Debutante] Execution d'un fichier php via une tache cron

12 réponses
Avatar
Nat
Bonjour!
Ouf!
J'essaie d'installer un script de mailing list
(http://www.notonebit.com/projects/mailinglist/)
C'est le seul que j'ai trouvé qui permet de rédiger des mails à l'avance
mais, il est in english :o(

Il fonctionne sauf qu'il n'envoie pas les mails :o( Je dois donc activer
moi-même le fichier .php (consume.php) afin qu'il démarre l'envoie, pas très
pratique.

Depuis deux jours, j'ai fouillé sur le site, le forum, Google et j'arrive à
la conclusion que je dois faire une tâche cron pour que ça fonctionne.
J'ai donc fait activer "Crontab" sur mon hébergement et j'sens que j'y suis
presque!
Voici le message que "Cron Daemon" m'envoie :

/var/www/vhosts/mondomaine.qc.ca/httpdocs/mondossier/diffusion/admin/consume.php:
line 1: ?: No such file or directory
/var/www/vhosts/mondomaine.qc.ca/httpdocs/mondossier/diffusion/admin/consume.php:
line 2: syntax error near unexpected token `'config.inc.php''
/var/www/vhosts/mondomaine.qc.ca/httpdocs/mondossier/admin/consume.php: line
2: `include('config.inc.php'); '

Ce que je ne comprend pas dans ce message, c'est que s'il ne trouve pas
"consume.php" comment peut-il me dire qu'il y a une erreur dans
`'config.inc.php''???

Si j'exécute "consume.php" à partir de mon navigateur, la tâche
s'éxécute... étrange....
Suis-je sur la bonne piste?
Qu'est-ce qui me manque dans ma tâche cron? Des idées à me donner?
Possible de m'aiguiller un peu car là, j'suis perdue!

Merci!
Une newbie désespérée!!! ;o)
----.(-. N@t .-).----

10 réponses

1 2
Avatar
Sebastian 'CrashandDie' Lauwers
Nat wrote:

Bonjour!


Bonsoir ;)

Ouf!


ti

J'essaie d'installer un script de mailing list
(http://www.notonebit.com/projects/mailinglist/)
C'est le seul que j'ai trouvé qui permet de rédiger des mails à l'avance
mais, il est in english :o(


Ok, jusque là, aucun problème je présume...

[snip]

/var/www/vhosts/mondomaine.qc.ca/httpdocs/mondossier/diffusion/admin/consume.php:
line 1: ?: No such file or directory

[snip]
Ce que je ne comprend pas dans ce message, c'est que s'il ne trouve pas
"consume.php" comment peut-il me dire qu'il y a une erreur dans
`'config.inc.php''???


J'ai téléchargé le script, et voici ce que je vois à la première ligne
du dit fichié:

---
<?
---

Ca me semble vraiment très peu probable, mais peut-être que votre
hébergeur ne supporte pas les shorttags? (<? au lieu de <?php)

Cela pourrait expliquer la suite?

Hmm, enfin, c'est ce que je dirais si jamais j'avais tenté de débugguer
l'application... Même si c'est une mauvaise chose qu'ils utilisent des
shorttags dans un script "grand publique", ce n'est pas de là que viens
votre problème...

Si j'exécute "consume.php" à partir de mon navigateur, la tâche
s'éxécute... étrange....


Hmm, ok, donc le problème ne se situe pas avec PHP, ou votre serveur
web, mais bien avec le cron qui exécute le fichier...

Suis-je sur la bonne piste?


Oui, presque... Pour donner un exemple, voici ce qui se passe lorsque
j'exécute le fichier consume.php, sur mon PC (sous linux):

--
~/firefox_dl/sml/simple/admin $ ./consume.php
: No such file or directory
./consume.php: line 2: syntax error near unexpected token `'config.inc.php''
'/consume.php: line 2: `include('config.inc.php');
~/firefox_dl/sml/simple/admin $
--

Donc? Les erreurs que vous recevez, ne viennent pas de PHP, mais bien du
système d'exploitation, qui vient d'essayer d'interprêter votre script
PHP, en bash.

Qu'est-ce qui me manque dans ma tâche cron? Des idées à me donner?


Sans doute, avez vous oublié d'indiquez dans la tâche cron, que c'est
PHP qui doit executer le script, et pas bash...

Possible de m'aiguiller un peu car là, j'suis perdue!


Best regards,

Merci!


S.

Une newbie désespérée!!! ;o)


Un contributeur absent depuis bien trop longtemps ;)

--
<SwifT> that's it
<SwifT> I just got a Word document with a screenshot in it because I
asked for a screenshot of an issue he had with firefox and our site

Avatar
Nat
Re-moi

J'avais oublié de faire une recherche dans les news, via Google, j'ai trouvé
ceci :

++++++++++++++++++++++++++++++++++++++++++++++++++++
Il faudrait donc placer sur la première la ligne la ligne suivante :

#!/usr/bin/php
(en vérifiant que le chemin vers le binaire php est bien celui là)
++++++++++++++++++++++++++++++++++++++++++++++++++++

Je reçois ceci en réponse
++++++++++++++++++++++++++++++++++++++++++++++++++++
Status: 404
Content-type: text/html
X-Powered-By: PHP/4.3.2

No input file specified.
++++++++++++++++++++++++++++++++++++++++++++++++++++

J'en conclut que le chemin vers le binaire php n'est pas bon...
Bonne conclusion?
Comment trouver le bon chemin?


––––•(-• •-)•––––
Avatar
Ludovic
il ne manquerait pas le php après le ?
<?php doit apparaître au début du fichier

-
Ludovic
http://mon.calendrier.free.fr
Avatar
Nat
J'ai finalement trouvé une solution très peu orthodoxe, enfin, je pense!
LOL!
J'ai ajouté, à ma page d'accueil, juste à la fin de la page index.php, ceci
:

</html>

<?

include ('diffusion/admin/consume.php');

?>


Donc, si je suis chanceuse, quelqu'un passera par là afin de déclencher le
script!!! LOL!
A date, j'ai fait quelques tests et ça fonctionne!
Comme j'ai au moins une centaine de visiteurs par jour présentement, je me
dis que quelqu'un devrait passer autour de la date et l'heure où je veux que
le script s'éxécute!

Ma seule crainte : Est-ce sécuritaire?
(le dossier est protégé avec htpaccess)


----.(-. .-).----
Avatar
Paul Delannoy
Nat a écrit:
Re-moi

J'avais oublié de faire une recherche dans les news, via Google, j'ai trouvé
ceci :

++++++++++++++++++++++++++++++++++++++++++++++++++++
Il faudrait donc placer sur la première la ligne la ligne suivante :

#!
(en vérifiant que le chemin vers le binaire php est bien celui là)
++++++++++++++++++++++++++++++++++++++++++++++++++++

Je reçois ceci en réponse
++++++++++++++++++++++++++++++++++++++++++++++++++++
Status: 404
Content-type: text/html
X-Powered-By: PHP/4.3.2

No input file specified.
++++++++++++++++++++++++++++++++++++++++++++++++++++


Tu y es !! mais ce que dit ce message (qui vient de PHP lui même) c'est
qu'il ne sait pas quel programme source analyser et exécuter ; donc...
le crontab doit en fait contenir, à la fréquence désirée, l'instruction:
/usr/bin/php /diffusion/admin/consume.php
J'eqça.

Avatar
Sebastian 'CrashandDie' Lauwers
Nat wrote:

Donc, si je suis chanceuse, quelqu'un passera par là afin de déclencher le
script!!! LOL!


Oui, mais très franchement, il vaut mieux ne pas espérer sur la chance
en informatique...

A date, j'ai fait quelques tests et ça fonctionne!


Bien entendu, mais je doute que ce ne soit la bonne solution...

En fait, je voulais simplement vous aiguiller sur le fait qu'il fallait
indiquer dans le cron comment il fallait interprêter le script... Le
contributeur Paul Delannoy a posté la démarche à suivre. Je vous
conseille donc de suivre ses conseils.

Comme j'ai au moins une centaine de visiteurs par jour présentement, je me
dis que quelqu'un devrait passer autour de la date et l'heure où je veux que
le script s'éxécute!


Oui, mais, comme dit, même si cela *devrait* fonctionner, ce n'est pas
pour autant que cela fonctionne, comme on le souhaite. Mieux vaut
contrôler totalement l'application, quitte à chercher un peu plus longtemps.

Ma seule crainte : Est-ce sécuritaire?
(le dossier est protégé avec htpaccess)


Je ne sais pas trop, je n'ai pas regardé de très près le code, et le
problème, c'est qu'il me semble que vous non plus. Vous incluez donc un
fichier, dont vous ne connaissez pas l'exécution, dans une page qui
n'est pas prévue à cet effet. Que ce passerait-il si un bug survenait?
Et si maintenant un message d'erreur venait à réveller mot de passe ou
login?

Je vous conseille donc d'utiliser la technique cron, qui est de loin,
bien plus "sécuritaire" que la chance...

Best Regards,

S.

--
"Who cares if it doesn't do anything? It was made with our new
Triple-Iso-Bifurcated-Krypton-Gate-MOS process ..."

Avatar
Nat
#!/usr/bin/php
Cette ligne, je l'avais insérer dans la première ligne de consume.php


Vous me dites de plutôt écrire :
#!/usr/bin/php /diffusion/admin/consume.php
dans consume.php ???

Wow! Là, le php me dépasse vraiment!!!!


----.(-. .-).----
Avatar
Olivier Miakinen

Donc, si je suis chanceuse, quelqu'un passera par là afin de déclencher le
script!!! LOL!


Oui, mais très franchement, il vaut mieux ne pas espérer sur la chance
en informatique...

A date, j'ai fait quelques tests et ça fonctionne!


Bien entendu, mais je doute que ce ne soit la bonne solution...


Pourtant, je n'ai pas l'impression que le choix de l'heure d'envoi soit
très critique dans ce que veut faire Nat, cela rentre donc tout-à-fait
dans le cas exposé dans la FAQ : <http://faqfclphp.free.fr/#rub4.4>.

Ou alors je n'ai rien compris, ce qui est encore possible.


Avatar
Calimero
Nat wrote:
#!/usr/bin/php
Cette ligne, je l'avais insérer dans la première ligne de consume.php


Vous me dites de plutôt écrire :
#!/usr/bin/php /diffusion/admin/consume.php
dans consume.php ???

Wow! Là, le php me dépasse vraiment!!!!



Soit tu mets
#!/usr/bin/php
en tant que première ligne de ton script.

Si c'était un script shell bash, tu mettrais:
#!/bin/bash
comme première ligne. C'est un des principes de base de l'exécution de
programmes sous *nix.

Soit tu mets
/usr/bin/php -f /chemin/vers/consume.php
dans ta crontab

--
@+
Calimero

Avatar
Sebastian 'CrashandDie' Lauwers
Nat wrote:

#!/usr/bin/php
Cette ligne, je l'avais insérer dans la première ligne de consume.php


Oui :)

Mais maintenant, il faut la supprimer ;)

Vous me dites de plutôt écrire :
#!/usr/bin/php /diffusion/admin/consume.php
dans consume.php ???


Non

#min hour date mon wkday command
* */10 * * * /usr/bin/php /path/consume.php

(Où /path/ remplace le chemin vers consume.php)

Voilà ce que doit être votre cron, ainsi, consume.php sera executé
toutes les 10 heures (par exemple)

Wow! Là, le php me dépasse vraiment!!!!


Hmm, on passe tous par là ;)

Donc, une fois connecté à votre serveur, en mode console, voici ce que
vous devez faire:

---
cd $HOME
echo "#min hour date mon wkday command" >> crontab.cron
echo "* */10 * * * "
"/usr/bin/php /path/consume.php" >> crontab.cron
crontab crontab.cron
---

Si vous n'avez pas accès en mode console, je ne connais pas l'interface
de votre serveur, et ne puis donc pas vous aider... Remarque, je suis
sur que vous avez compris ;)

S.

--
<drobbins> seemant: I delete spam rather quickly :)
<seemant> drobbins: me too, but once in a while, I like to see what
offers we're getting
<drobbins> seemant: remove unwanted pet hair

1 2