Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/11/2007, 14h05   #1
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Par défaut crontab et PHP 4.4.2 (cli)

Bonjour à tous,

J'ai un petit soucis.
Je suis sous linux et en faisant php -v j'ai :
En faisant whereis php
Code :
php: /etc/php /usr/local/bin/php /usr/local/lib/php /usr/local/lib/php.ini /opt/lampp/bin/php
J'ai un script qui met à jour une table dans une base de données oracle, que j'appelerai monscript.php

Quand je tape la ligne
Code :
php /chemin/de/mon/monscript.php
la table est mise à jour

Quand je modifie crontab pour ajouter la ligne
Code :
*/30 * * * * /chemin/de/mon/monscript.php
Rien ne se passe.

Je vous pose la question, car j'ai fait une recherche developpez et google, il y a quelques sujets similaires, mais pas de réponse précise, mise à part, vous n'avez pas cli installé.

Est ce que c'est pas plutot que j'ai 2 apache qui tournent en meme temps (apache et lampp)

Dernière précision, monscript.php commence comme ca :
Code :
1
2
3
4
5
 
#!/usr/local/bin/php
<?php
script
?>
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 14h30   #2
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
J'ai modifier le script pour annoncer une nouvelle option dans le script php
monscript.php ressmble maintenant à ca
Code :
1
2
3
4
5
 
#!/usr/local/bin/php -q
<?php
script
?>
et le crontab à ca
Code :
*/30 * * * * php /chemin/de/mon/monscript.php
J'ai rajouté l'option "-q" mais je ne sais pas à quoi ca sert, il ne figure pas dans
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h13   #3
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
si ça ne fonctionne pas, essaye
Code :
1
2
3
4
5
 
#!/usr/bin/env php
<?php
//code
?>
et aussi de taper ça dans le shell:
Code :
1
2
 
chmod +x tonfichier.php
pour le rendre exécutable et l'utliser de la sorte:
Code :
1
2
3
4
 
./tonfichier.php
ou
/path/to/tonfichier.php
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h22   #4
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Pas mieux avec
Code :
1
2
3
4
#!/usr/bin/env php
<?php
//code
?>
J'avais déjà rendu mon script executable
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h24   #5
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
ben, test de le lancer comme un exécutable à la main, ensuite si ça ne fonctionne pas avec le cron, ben ça vient du cron, cherche pas plus loin

d'ailleurs, copie nous la ligne crontab exacte
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h32   #6
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Alors comme je l'ai mis dans mon premier post,

si j'execute mon script directement dans la console de cette manière
Code :
/chemin/de/mon/monscript.php
mon script est bien executé (ca veut dire que le test du script comme un executable fonctionne)

Maintenant, les lignes exactes qui sont dans mon cron et je l'avais mis aussi au début, c'est :
Code :
*/30 * * * * /chemin/de/mon/monscript.php
Ca veut dire que je veux l'executer toutes les 30 min

Je pense qu'on ne peut pas jeter la faute au cron entièrement, je pense que c'est entre le cron qui appelle le script php. Il y a une perte d'info et je pense que la commande php n'est plus reconnu dans le shebang
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h35   #7
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
non non, c'est bien le cron.. à tous les coups, et je m'en doutais, mais j'ai pas pu le confirmer parce que c'est pas la ligne EXACTE qu'on a là, tu as donné un chemin relatif, or, il lui faut un chemin absolu, partant de la racine /, là tu seras sûr de ton coup
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h39   #8
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Par défaut @alceste

Merci pour tes réponses rapides,

Je m'excuses, pour executer le script, je fais
Code :
1
2
 
php /chemin/de/mon/monscript.php
A quel niveau je n'ai pas mis le chemin absolue?
Je suis encore novice en linux. Le chemin absolue ne commence pas par "/"
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h44   #9
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
oui, je m'excuse, j'avais zappé le / devant chemin.. et si tu enlèves le php, et que tu mets juste /path/to/fichier.php dans le cron ?
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 16h43   #10
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Pour résumer.
Mon script est comme ceci
Code :
1
2
3
4
5
 
#!/usr/local/bin/php -q
<?php
script
?>
ce qui fonctionne c'est en ligne de commande :
Code :
1
2
 
php /chemin/de/mon/monscript.php
ou
Code :
/chemin/de/mon/monscript.php
si je suis sous le repertoire
/chemin/de/mon
fonctionne
ne fonctionne pas

le cron ne donne rien
C'est ca mon problème
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 14h49   #11
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Par défaut c'est encore moi

Bonjour,

je me permet réactualiser le sujet pour vous donner un peu l'état d'avancement de mon problème :

j'ai le programme suivant :
Code :
1
2
3
4
5
6
7
8
9
 
#!/usr/local/bin/php -q
<?php
echo 'avant';
$dbConnexion=OCILogon(BDD_SCHEMA,BDD_PASSWORD, BDD_HOST);
echo 'après';
 
reste du programme .....
?>
en tapant directement la commande suivante dans ma console sous linux (redhat)
le programme s'exécute bien. (dans le log, j'ai avant ET après)
Code :
/usr/local/bin/php -f /usr/local/apache/htdocs/www/cron/sessionCleaner.php>/usr/local/apache/htdocs/www/cron/sessionCleaner.log
par contre quand je mets cette ligne dans le crontab -e,
Code :
1
2
 
*/30 * * * * /usr/local/bin/php -f /usr/local/apache/htdocs/www/cron/sessionCleaner.php>/usr/local/apache/htdocs/www/cron/sessionCleaner.log
dans le log, j'ai juste avant et je n'ai pas la débug pour après????
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h15.


 
 
 
 
Partenaires

Hébergement Web