Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

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.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#7 Le 14/09/2014, à 09:33

bupbup

Re : [Resolu] Probleme execution de script php avec cron

jplemine a écrit :

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

En ligne

#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...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

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)

En ligne

#13 Le 14/09/2014, à 10:12

bupbup

Re : [Resolu] Probleme execution de script php avec cron

bruno a écrit :

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)

En ligne

#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*

En ligne

#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 wink)

Dernière modification par bruno (Le 14/09/2014, à 11:18)

En ligne

#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 wink

En ligne

#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.

En ligne