Pages : 1
#1 Le 13/09/2014, à 13:04
- bupbup
[Resolu] Probleme execution de script php avec cron
Bonjour,
Voila j'ai un site hébergé pas 1and1 sur un serveur linux.
J'ai suivi les explications de 1and 1 pour créer une tache cron :https://help.1and1.com/hosting-c37630/s … 95882.html
J'ai tout réussi jusqu’à la fin et tout fonctionne, mais voilà mon problème, lorsque que je change le script de base donnée dans l'exemple ci deussus par ce script
<?php
try
{
$bdd = new PDO('mysql:exemple;dbname=exemple', 'exemple', 'exemple');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
function envoieMailRappelProf($exemple)
{
$expediteur="exemple";
$expediteurMail="exemple";
global $bdd;
$req=$bdd->query("SELECT * FROM EXEMPLE WHERE id=".$exemple);
$profDonnees=$req->fetchALl();
foreach( $profDonnees as $unProf)
{
$emailProf=$unProf['email'];
$nomProf=$unProf['nom'];
$prenomProf=$unProf['prenom'];
}
$contenuMail="exemple";
$mail =$emailProf;
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
$message_txt = $contenuMail;
$message_html = "<html><head></head><body>".$contenuMail."</body></html>";
$boundary = "-----=".md5(rand());
$sujet = "exemple";
$header = "From: \"".$expediteur."\"<".$expediteurMail.">".$passage_ligne;
$header.= "Reply-to: \"".$expediteur."\" <".$expediteurMail.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
$message.= $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
mail($mail,$sujet,$message,$header);
}
$listProf=$bdd->query("SELECT * FROM EXEMPLE");
$listProfD=$listProf->fetchAll();
foreach($listProfD as $aProf)
{
envoieMailRappelProf($aProf['id']);
}
?>
Si j’exécute le script à la main en saisissant L’URL dans un navigateur tout marche bien.
mais dans cron j'ai essayé les deux façons suivantes mais aucune ne marche
0 1 * * 6 /usr/bin/php /exemple/exemple/exemple/exemple/monscript.php
0 1 * * 6 WGET -q http://monsite.com/monscript.php
Pour info j'ai essayé de modifié monscript.php via nano monscript.php ,par le script exemple donné par 1and1 et cela fonctionne.
Je pense donc que le problème vient du script en lui même mais je ne comprends pas pourquoi puisque le script fonctionne normalement lorsqu'il est lancé à la main.
Si quelqu'un a une idée, par avance merci
Dernière modification par bupbup (Le 14/09/2014, à 09:53)
Hors ligne
#2 Le 14/09/2014, à 08:35
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Désolé j'avais posté dans la mauvaise section,
merci de l'avoir déplacé.
J'ai encore passé la journée de hier à résoudre ce problème mais toujours aucune solution de mon côté,
Est-ce que quelqu'un aurait une piste?
Problème d'encodage du fichier php?
Je vais essayer de réécrire le script directement avec nano monscript.php, et je vous tiens au courant.
En attendant je suis preneur de toute piste.
Par avance merci
Hors ligne
#3 Le 14/09/2014, à 09:03
- jplemoine
Re : [Resolu] Probleme execution de script php avec cron
Quand tu le lances via cron, utilises-tu le crontab de ton utilisateur ou celui de root ?
Si c'est celui de root, il est possible que ce soit des variables d'environnement qui manquent...
Si c'est celui de ton utilisateur, il faut que le script fonctionne en ligne de commande sans mettre sudo.
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#4 Le 14/09/2014, à 09:21
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Bonjour le serveur est hébergé par 1and1, poour y créer mes crontab je suis la démarche décrite sur le site de 1 and 1
https://help.1and1.com/hosting-c37630/s … 95882.html
C'est a dire que j'utilise putty en rentrant mes identifiants et mot de passe définit sur 1and1.
Est ce que cela répond à ta question?
Hors ligne
#5 Le 14/09/2014, à 09:25
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
si cela peut aider un peu plus quand j'utilise putty mes lignes de commande commence par
(uiserver):u******* : ~>
donc je pense que cela correspond a cette proposition :
"Si c'est celui de ton utilisateur, il faut que le script fonctionne en ligne de commande sans mettre sudo."
Ai je raison?
Si oui je ne comprends pas ce que tu veux dire par : il faut que le script fonctionne en ligne de commande sans mettre sudo.
Dernière modification par bupbup (Le 14/09/2014, à 09:27)
Hors ligne
#6 Le 14/09/2014, à 09:30
- jplemoine
Re : [Resolu] Probleme execution de script php avec cron
Je viens de me rendre compte d'un truc : que fait la ligne que tu mets dans le cron d'après toi ?
Parce que je ne maîtrise pas bien le 6 mais le 0 1 du début veut dire à 1h du matin...
Essaies de mettre 5 étoiles (et donc lancement toutes les minutes) pour être sur que ce ne soit pas un problème de déclenchement du script.
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#7 Le 14/09/2014, à 09:33
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Je viens de me rendre compte d'un truc : que fait la ligne que tu mets dans le cron d'après toi ?
Parce que je ne maîtrise pas bien le 6 mais le 0 1 du début veut dire à 1h du matin...
Essaies de mettre 5 étoiles (et donc lancement toutes les minutes) pour être sur que ce ne soit pas un problème de déclenchement du script.
Désolé j'avais laissé la ligne comme ça dans mon message car c'est ce que je veux qu'elle fasse mais dans mes test je mets bien du * * * * *
PS: 0 1 * * 6 = tout les samedi à 1 heure du matin
Dernière modification par bupbup (Le 14/09/2014, à 09:34)
Hors ligne
#8 Le 14/09/2014, à 09:36
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Bonjour,
Deux choses à essayer.
Une fois connecté en SSH sur le serveur, essaie de lancer ton script en ligne de commande :
/usr/bin/php /exemple/exemple/exemple/exemple/monscript.php
Si cela ne marche pas il faut effectivement utiliser wget dans ta tâche cron mais ainsi :
0 1 * * 6 /usr/bin/wget -q http://monsite.com/monscript.php
#9 Le 14/09/2014, à 09:36
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
J'ai réessayer en récrivant tout mon script via nano monscript.php, mais cela ne fonctionne toujours pas...
Hors ligne
#10 Le 14/09/2014, à 09:49
- jplemoine
Re : [Resolu] Probleme execution de script php avec cron
pourquoi utiliser un coup /usr/bin/php et un coup /usr/bin/wget -q ?
Il faudrait utiliser la même syntaxe pour les 2...
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#11 Le 14/09/2014, à 09:52
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Bon quand je fais
/usr/bin/php /exemple/exemple/exemple/exemple/monscript.php
J'ai une belle erreur
X-Powered-By: PHP/4.4.9
Content-type: text/html
<br />
<b>Parse error</b>: syntax error, unexpected '{' in <b>/exemple/exemple/exemple/exemple/monscript.php</b> on line <b>3</b><br />
En gros il me dit qu'il ne devrait pas y avoir de { après mon try.
Si j'ai bien compris?
Quand je fais
* * * * * /usr/bin/wget -q http://monsite.com/monscript.php
YOUPI IT WORKS!!!!!
Par contre j'aimerais bien comprendre la pourquoi l’exécution en ligne de commande me retourne une erreur???
En tout cas merci pour m'avoir expliqué la démarche à suivre pour résoudre mon problème.
Je vais avoir besoin d'utiliser cron de plus en plus souvent et cette démarche me sera certainement utile.
Dernière modification par bupbup (Le 14/09/2014, à 09:56)
Hors ligne
#12 Le 14/09/2014, à 10:05
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Attention ton hébergeur te fournit du PHP en version 4.4.9 dans la version en ligne de commande ! Or la gestion des exceptions n'est apparue que dans PHP 5…
Il semble bien portant que le module PHP pour le serveur web soit en version 5 (puisque cela marche).
C'est assez curieux comme configuration… Donne-nous le retour de :
/usr/bin/php5 -v
Si cela renvoie PHP 5*****, alors tu pourras mettre dans ton cron :
0 1 * * 6 /usr/bin/php5 /exemple/exemple/exemple/exemple/monscript.php
Dernière modification par bruno (Le 14/09/2014, à 10:06)
#13 Le 14/09/2014, à 10:12
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Attention ton hébergeur te fournit du PHP en version 4.4.9 dans la version en ligne de commande ! Or la gestion des exceptions n'est apparue que dans PHP 5…
Il semble bien portant que le module PHP pour le serveur web soit en version 5 (puisque cela marche).
Oui j'avais trouvé ça bizarre aussi.
Je ne savais pas pour la gestion des exceptions.Merci pour l'info
Oui cela me retourne bien PHP 5.2.17
Je vais essayé
0 1 * * 6 /usr/bin/php5 /exemple/exemple/exemple/exemple/monscript.php
Mais quel est la différence avec
* * * * * /usr/bin/wget -q http://monsite.com/monscript.php
Si j'ai bien compris la première exécute ma requête directement sur le serveur et la deuxième va ouvrir la page qui exécute ensuite mon script?
Hors ligne
#14 Le 14/09/2014, à 10:22
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Oui tu as bien compris.
La première solution avec php5 est préférable car le script est exécuté directement sur le serveur par l'interpréteur PHP.
La seconde solution passe par wget qui va interroger le serveur (avec une résolution de nom au passage) et lui demander d'exécuter le script php. Cette solution mobilise donc plus de ressources et de temps.
Dernière modification par bruno (Le 14/09/2014, à 10:26)
#15 Le 14/09/2014, à 10:31
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
0 1 * * 6 /usr/bin/php5 /exemple/exemple/exemple/exemple/monscript.php
fonctionne correctement.
Petite question en plus :
si je fais un
whereis php
j'ai pour réponse
php: /usr/bin/php /usr/bin/php5.4 /usr/bin/php5.5 /usr/bin/php5.4-cli /usr/bin/php5.5-cli /usr/lib/php /usr/lib/php.ini-nourl /usr/lib/php.ini /usr/lib/php5.4 /usr/lib/php5.5 /usr/local/bin/php /usr/local/bin/php5.4 /usr/local/bin/php5.5 /usr/local/lib/php.ini-nourl /usr/include/php /usr/include/php5.4 /usr/include/php5.5 /usr/local/php /usr/share/php
Ce qui me laisse supposer que php 5.4 5.5 sont bels et bien montés sur le serveur.
Par conséquent pourquoi lorsque je fais un
/usr/bin/php5 -v
J'ai pour résultat PHP 5.2.17 ?
Hors ligne
#16 Le 14/09/2014, à 10:46
- bruno
Re : [Resolu] Probleme execution de script php avec cron
C'est une pratique assez courante chez les hébergeurs de proposer plusieurs versions de php. Cela doit être documenté chez ton hébergeur (notamment comment utiliser tel ou telle version).
Pour comprendre l'histoire de la version 5.2, il faudrait regarder ce que sont réellement ces fichiers (des exécutables, des liens symboliques,…) :
ls -l /usr/bin/php*
#17 Le 14/09/2014, à 10:54
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Sur mon hébergeur j'avais configuré la version php en 5.5
voici la réponse à
ls -l /usr/bin/php*
lrwxrwxrwx 1 root root 19 Nov 19 2013 /usr/bin/php -> ../lib/cgi-bin/php4
-rwxr-xr-x 1 root root 901 Jan 14 2014 /usr/bin/php-config
-rwxr-xr-x 1 root root 3422 Jun 17 22:22 /usr/bin/php-config5
-rwxr-xr-x 1 root root 3786 Aug 25 18:46 /usr/bin/php-config5.4
-rwxr-xr-x 1 root root 3772 Aug 22 18:10 /usr/bin/php-config5.5
lrwxrwxrwx 1 root root 13 Dec 10 2013 /usr/bin/php-config6 -> php-config5 .4
lrwxrwxrwx 1 root root 19 Nov 19 2013 /usr/bin/php4 -> ../lib/cgi-bin/php 4
lrwxrwxrwx 1 root root 19 Nov 21 2013 /usr/bin/php5 -> ../lib/cgi-bin/php 5
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php5.4 -> ../lib/cgi-bin/p hp5.4
-rwxr-xr-x 1 root root 9978552 Aug 25 18:46 /usr/bin/php5.4-cli
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php5.5 -> ../lib/cgi-bin/p hp5.5
-rwxr-xr-x 1 root root 10114712 Aug 22 18:07 /usr/bin/php5.5-cli
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php6 -> ../lib/cgi-bin/php 5.4
-rwxr-xr-x 1 root root 3998 Jan 14 2014 /usr/bin/phpize
-rwxr-xr-x 1 root root 4498 Jun 17 22:22 /usr/bin/phpize5
-rwxr-xr-x 1 root root 4495 Aug 25 18:46 /usr/bin/phpize5.4
-rwxr-xr-x 1 root root 4495 Aug 22 18:10 /usr/bin/phpize5.5
lrwxrwxrwx 1 root root 9 Dec 10 2013 /usr/bin/phpize6 -> phpize5.4
Hors ligne
#18 Le 14/09/2014, à 11:17
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Bon c'est clair les exécutables sont dans /usr/lib/cgi-bin/ et il y a des liens symboliques (tu as coupé tes lignes) :
lrwxrwxrwx 1 root root 19 Nov 19 2013 /usr/bin/php -> ../lib/cgi-bin/php4
lrwxrwxrwx 1 root root 19 Nov 19 2013 /usr/bin/php4 -> ../lib/cgi-bin/php4
lrwxrwxrwx 1 root root 19 Nov 21 2013 /usr/bin/php5 -> ../lib/cgi-bin/php5
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php5.4 -> ../lib/cgi-bin/php5.4
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php5.5 -> ../lib/cgi-bin/php5.5
lrwxrwxrwx 1 root root 21 Dec 10 2013 /usr/bin/php6 -> ../lib/cgi-bin/php5.4
Pour résumer, en ligne de commande :
php -> PHP version 4.4.9
php5 -> PHP version 5.2.17
php5.4 -> PHP version 5.4
php5.5 -> PHP version 5.5
php6 -> PHP version 5.4 (c'est idiot de toute façon PHP 6 ne sortira jamais )
Dernière modification par bruno (Le 14/09/2014, à 11:18)
#19 Le 14/09/2014, à 11:32
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
du coup je peux faire
0 1 * * 6 /usr/bin/php5.5 /exemple/exemple/exemple/exemple/monscript.php
au lieu de
0 1 * * 6 /usr/bin/php5 /exemple/exemple/exemple/exemple/monscript.php
Hors ligne
#20 Le 14/09/2014, à 11:34
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Oui
#21 Le 14/09/2014, à 11:34
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
en tout cas merci pour toutes vos explications, cela m'a permis de comprendre un minimum ce que je faisais au lieu de suivre bêtement un tutoriel.
Hors ligne
#22 Le 14/09/2014, à 11:37
- bupbup
Re : [Resolu] Probleme execution de script php avec cron
Du coup est il possible de changer le raccourci faisant pointer Php sur PHP version 4.4.9 par un raccourci le faisant pointer sur PHP version 5.5 ?
Ou bien cela me serait possible seulement si je disposais de mon propre serveur?
Dernière modification par bupbup (Le 14/09/2014, à 11:39)
Hors ligne
#23 Le 14/09/2014, à 13:14
- bruno
Re : [Resolu] Probleme execution de script php avec cron
Dans la mesure où tous ces fichiers appartiennent à root je doute fort que tu puisses le faire. Ce n'est pas un serveur dédié, ni un serveur virtuel, mais un hébergement mutualisé (enfin je suppose) tu n'as donc pas de droits 'root', ni de possibilité d'utiliser sudo.
Pages : 1