OVH Community, votre nouvel espace communautaire.

Script PHP Crontab


jimmyfr
22/04/2004, 08h36
D.L écrivait :
euh, ok, je met ça où? dans le fichier crontab ?

/me gros débutant, lynx je sais même pas ce que c'est à part un gros chat
Lynx est un navigateur web entierement en mode texte,
pratique pour une visu rapide, ou si tu es sur un terminal
VT100 ....

;-)

D.L
21/04/2004, 15h44
euh, ok, je met ça où? dans le fichier crontab ?

/me gros débutant, lynx je sais même pas ce que c'est à part un gros chat

Titeuf
21/04/2004, 11h46
Yep j'avais le même souci, du coup j'ai utilisé une syntaxe avec Lynx....un truc du type

export TERM=vt100 ; lynx -dump http://nsXXXX.ovh.net/~folder/checkAll.php

Et hop ça fonctionne....si le dossier est protégé on peut aussi mettre les identifiants avec l'option "-auth"

export TERM=vt100 ; lynx -auth:[login]:[moTdEPaSsE] -dump http://nsXXXX.ovh.net/~folder/checkAll.php

Voili voilou....maintenant c'est bien aussi de savoir qu'il faut le path complet de l'interpréteur, merci de l'info !

D.L
20/04/2004, 01h49
j'ai le même probleme, et ce malgré l'aide trouvée ici (j'avais aussi oublié /usr/local/bin/php )

le script fonctionne nikel en ligne de commande, et même en appel http, mais impossible de le faire fonctionner en cron, il se lance, mais rien ne se passe
et en plus webmin me sort aussi de jolies stats, tranquille

je le fais lancer avec le même user, que ce soit en ligne de commande en http ou en cron

quelqu'un a eu ce probleme et l'a réglé d'une autre manière que celles listées ci-dessus?

mon cron :

50 23 * * * monuser /usr/local/bin/php /home/monuser/www/fichier.php > /dev/null

--------------------------

quand je lance le cron depuis webmin, il me génère ça:


Content-type: text/html
X-Powered-By: PHP/4.3.4

# exec_cron.cgi
# Execute an existing cron job, and display the output

require './cron-lib.pl';
&ReadParse();

@jobs = &list_cron_jobs();
$job = $jobs[$in{'idx'}];
&can_edit_user(\%access, $job->{'user'}) || &error($text{'exec_ecannot'});
&foreign_require("proc", "proc-lib.pl");

# split command into command and input
$job->{'command'} =~ s/\\%/\0/g;
@lines = split(/%/ , $job->{'command'});
foreach (@lines) { s/\0/%/g; }
for($i=1; $i<@lines; $i++) {
$input .= $lines[$i]."\n";
}

$| = 1;
$theme_no_table++;
&header($text{'exec_title'}, "");
print "
\n";
&additional_log('exec', undef, $lines[0]);
&webmin_log("exec", "cron", $job->{'user'}, $job);

# Remove variables that wouldn't be in the 'real' cron
foreach $e ('SERVER_PORT', 'GATEWAY_INTERFACE', 'WEBMIN_VAR', 'SERVER_ROOT',
'REMOTE_USER', 'SERVER_ADMIN', 'REQUEST_METHOD', 'REMOTE_HOST',
'REMOTE_ADDR', 'SERVER_SOFTWARE', 'PATH_TRANSLATED', 'QUERY_STRING',
'MINISERV_CONFIG', 'SERVER_NAME', 'SERVER_PROTOCOL', 'REQUEST_URI',
'DOCUMENT_ROOT', 'WEBMIN_CONFIG', 'SESSION_ID', 'PATH_INFO',
'BASE_REMOTE_USER') {
delete($ENV{$e});
}
foreach $e (keys %ENV) {
delete($ENV{$e}) if ($e =~ /^HTTP_/);
}

# Set cron environment variables
foreach $e (&read_envs($job->{'user'})) {
$ENV{$1} = $2 if ($e =~ /^(\S+)\s+(.*)$/);
}

# Get command and switch uid/gid
@uinfo = getpwnam($job->{'user'});
$ENV{"HOME"} = $uinfo[7];
$ENV{"SHELL"} = "/bin/sh";
$ENV{"LOGNAME"} = $ENV{"USER"} = $job->{'user'};
$( = $uinfo[3];
$) = "$uinfo[3] $uinfo[3]";
($>, $<) = ($uinfo[2], $uinfo[2]);

# Execute cron command and display output..
print &text('exec_cmd', "$lines[0]"),"

\n";
print "

";
$got = &foreign_call("proc", "safe_process_exec",
$lines[0], 0, 0, STDOUT, $input, 1);
print "$text{'exec_none'}\n" if (!$got);
print "
\n";

print "
\n";
&footer("edit_cron.cgi?idx=$in{'idx'}", $text{'edit_return'},
"", $text{'index_return'});






ça a rien à voir avec mon code, donc je suppose que j'ai foiré quelque part, c'est comme s'il m'affichait le fichier qui doit "croner" mon script PHP


srapyk
28/03/2004, 16h40
Salut!

Moi j'avais eu le même problème en spécifiant l'interpreteur PHP dans le script lui même.

Par la suite, il s'est avéré que c'était les saut de lignes qui posaient problèmes, car j'avais édité le script sous Windows. Une petite conversion des caractères sous le format Unix, et tout fonctionnait :-)

Oscar

Daweb
27/03/2004, 18h27
Mille fois merci
Je n'avais pas pensé à cela, et après 2/3 jours de galère, enfin cela fonctionne !

sebos
27/03/2004, 17h14
Bon en fait c'est tout bete. l'interpreteur php n'était pas connu dans cron sans le path complet.

Du coup si je mets la ligne complète

* * * * * /usr/local/bin/php /home/lance_script.php > /dev/null

c tout bon.

Seb.

sebos
27/03/2004, 16h58
j'ai essayé de faire des écritures dans un fichier, rien n'y fait ... meme en entete de fichier, quand je lance le script à la main, ca marche, les traces sont bien écrites dans le fichier mais dès lors que c'est cron qui est sensé le lancer rien n'y fait ... alors que le script est bien appelé par cron si je m'en réfère aux logs !

Je ne comprends pas, alors que des bash eux fonctionnent ... ca doit venir de php mais pourquoi et comment résoudre ??

Sebastien.

Daweb
27/03/2004, 10h37
Si quelque un a une idée, car la je pige plus.

Pour tester, j'ai fais un tout petit fichier php, qui ecrit juste la date dans un fichier.

En le lançant en manuel, pas de problèmes, il fait son boulot. Dans le cron, plus rien.
Dans /home/log/cron je vois bien l'execution toutes les 10 minutes par exemple, mais ca ne fait aucun effet.

Comme si le cron lançait la tache, mais qu'elle ne s'effectue pas. J'ai bien mis le fichier php en chmod700, cela n'a rien changé.

J'ai même essayé un script sh avec dedant la commande PHP, san succès.

Pour le script anti-spam de i-services, c'est pareil, ca ne fait rien dès que c'est en cron.

Y aurait t'il une spécificité de PHP avec Cron ?
Je n'ai pas de variables non définies. A chaque fois je précise bien l'adresse complète d'un dossier ou fichier.

J'execute le script en root, le cron en root, pareil.

Mais cron fonctionne bien apparement, puisque d'autres scripts que j'ai en sh marchent sans problème.

Le problème doit donc venir d'apache ou PHP, mais je n'ai rien trouvé sur Internet...

A l'aide

Daweb
26/03/2004, 21h44
J'ai exactement le même probleme.
Si j'execute le cron en manuel depuis Webmin par exemple, il fonctionne parfaitement, fait ce que je lui demande, et cree un log daté.

Il est programmé pour le faire toutes les minutes, le log de cron indique son execution toutes les minutes, sans erreurs...

Et pourtant rien ne se passe !

L.Boggio
26/03/2004, 16h39
sebos écrivait :
Oui le script fonctionne en ligne de commande.
Dans var/log/cron j'ai bien les lignes correspondant à l'exécution du script mais pas d'erreurs spéciales...

root:root ne change rien, j'ai beau changer les droits ca ne donne rien..


Sebastien.
C'est assez bizarre. Es-tu sur de bien vérifier que le résultat de son exécution n'a pas eu lieu ? Essayes de rajouter dans ton script une action que tu es sur de pouvoir vérifier (genre, exécuter un fwrite($date.$heure) dans un fichier de /tmp)...

sebos
26/03/2004, 11h54
Oui le script fonctionne en ligne de commande.
Dans var/log/cron j'ai bien les lignes correspondant à l'exécution du script mais pas d'erreurs spéciales...

root:root ne change rien, j'ai beau changer les droits ca ne donne rien..


Sebastien.

L.Boggio
25/03/2004, 21h19
Le script fonctionne-t'il en ligne de commande ?
Y'a-t-il qque chose dans /var/logs ?

fafa
25/03/2004, 15h32
il faut que le fichier appartienne à root:root non ?

sebos
25/03/2004, 11h45
Bonjour,

J'ai un pb avec ma crontab et l'exécution d'un script en php.

J'ai cette ligne :
*/5 * * * * php /home/pointeauto.php > /dev/null

j'ai beau mettre cette ligne en entete du fichier
#!/usr/local/bin/php

ca ne change rien, le script n'est jamais exécuté ...

Avez vous une idée ?

Sebastien.