[RESOLU] CRON pour exécuter du php

Eléphant du PHP | 331 Messages

04 sept. 2007, 19:42

Bonjour,

Je souhaite exécuter automatiquement l'envoie de email en utilisant CRON qui lui exécutera mon script php.

Mon hébergeur me fournie CRONTAB MANAGER.

À la case commande j'ai mis /home/httpd/vhosts/distributionsm.com/httpdocs/test.php

Le fichier test.php est en CHMOD 755

En passant test.php c'est pas mon code final c'est un test pour aprivoiser CRON.

Voici l'erreur que CRON me retourne:
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 1: ?: No such file or directory
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 2: =Vous pouvez accéder à l'interface d'administration à:\n: command not found
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 3: =[email protected]: command not found
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 4: =[email protected]: command not found
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 5: =Un compte administrateur a été créer pour vous sur cafesdominicstpierre.com\n: command not found
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 6: =From: : command not found
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 7: syntax error near unexpected token `$courriel2,$sujet,$mailbody,$head'
/home/httpd/vhosts/distributionsm.com/httpdocs/test.php: line 7: `$result=mail($courriel2,$sujet,$mailbody,$head );'
Voici le code contenu dans test.php:
<?
$mailbody="Vous pouvez accéder à l'interface d'administration à:\n";
$courriel="[email protected]";
$courriel2="[email protected]";
$sujet="Un compte administrateur a été créer pour vous sur cafesdominicstpierre.com\n";
$head="From: $courriel";
$result=mail($courriel2,$sujet,$mailbody,$head );
?>
Je ne comprend pas l'erreur.

J'ai fouillé sur google et avec se que j'ai trouvé peut-être que CRON dois exécuter un script BASH qui lui exécutera le scrip PHP.

Si c'est ça j'ai pas compris comment coder le script BASH.

Pouvez-vous m'aider svp à trouver une solution ?

Merci!

ViPHP
ViPHP | 3607 Messages

04 sept. 2007, 20:11

Essaye simplement de remplacer <? par <?php ?

Eléphant du PHP | 331 Messages

04 sept. 2007, 20:27

Hummm, c'est pas ça l'erreur.

Merci!

une autre idée?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 sept. 2007, 20:57

Est-ce que tu as essayé d'exécuter le script sans passer par le cron ?
Essaye de le lancer via ton navigateur et en ligne de commande si possible ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 sept. 2007, 20:59

Normalement, quand tu exécutes un script PHP depuis un cron, il est exécuté en ligne de commande, il en donc possible qu'il faille donner le chemin vers l'exécutable PHP.

Une ligne de ce genre
#!/bin/php

<?php
//Ton code PHP
?>
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

04 sept. 2007, 20:59

C'est la première chose que j'ai faite avant même de penser le faire exécuter par CRON.

Eléphant du PHP | 331 Messages

04 sept. 2007, 21:01

Le post invité c'est moi j'ai pas remarqué que j'étais déconnecté.

Et quel extension je donnerais à ce fichier?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 sept. 2007, 22:38

Tu laisses l'extension .php, mais en ligne de commande, en CGI, l'association entre l'extension .php et le serveur PHP n'est pas forcément automatique ...

Est-ce que tu as essayé de lancer l'exécution de ton script en ligne de commande, sans passer par le cron ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 331 Messages

05 sept. 2007, 01:13

Je n'ai pas accès au serveur en ligne de commande.

Mon fournisseur d'hébergement me fournie un control panel (Plesk) ou il y a un outil CRON MANAGER.

Eléphant du PHP | 124 Messages

05 sept. 2007, 02:14

Ne t'embêtes pas, fais comme moi.

La ligne de commande ne marchait pas à cause des appels objets et autres.
Du coup je met mes cron en WGET

un truc genre wget http://www.trucmuche.com/test.php
Et tu diriges la sorties de wget dans le dev>null

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 sept. 2007, 08:00

Modération :
icebreak, merci de surveiller ton langage.

J'ai repris ton message pour en sortir quelque chose d'acceptable, tu vois donc qu'il est possible de dire la même chose sans être vulgaire
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

07 sept. 2007, 03:36

J'ai la même question, le même fournisseur (Plesk).
J'ai tenté un tas de truc.
Mon fichier PHP fonctionne très bien lorsqu'il est appelé par le navigateur, mais il semble impossible de l'appeler par CRON.

Voici les messages d'erreur:

/bin/sh: php -f agit.php: No such file or directory
/bin/sh: php http://www.cartefoi.net/agit.php: No such file or directory
/bin/sh: php http://public_html.cartefoi.net/agit.php: No such file or directory
/bin/sh: php http://www.cartefoi.net/public_html/agit.php: No such file or directory

Et à : php -f http://www.cartefoi.net/public_html/agit.php dev>null
Le message d'erreur est: "No input file specified."

Avec -f, sans -f
Avec chemin d'accès complet ou partiel
Avec chemin de recul /../..www

Toujours la même chose!

Ceux qui testeront ma page "agit.php" n'y verront rien, car cette page ne fait que m'envoyer un courriel.

Merci à l'avance de votre aide.

Mammouth du PHP | 881 Messages

07 sept. 2007, 03:39

Le message précédent est de moi.

Merci
Soyez artisans de paix

ViPHP
ViPHP | 5924 Messages

07 sept. 2007, 04:15

En ligne de commande, si tu utilises php, ca ne sert à rien de préciser une url, il n'y a aucune raison que ce soit reconnu par php, et si c'était reconnu, cela reviendrait à faire exécuter par php le résultat de ton script php. L'url est une adresse vers un serveur web, ce qui veut dire que cela fait appel au serveur apache (ou autre serveur web). Et que l'url fasse référence à la machine courante ne change rien, pour un programme qui s'exécute sur le serveur, ça ne représente rien qu'une url quelconque.

Pour exécuter un script php sur la machine courante, on peut utiliser :

Code : Tout sélectionner

php -f /chemin_absolu_du_script/script.php php -f ./chemin_relatif_du_script/script.php
Sachant que le chemin relatif du script est le chemin relatif à partir du cron et non du script courant. Pour les autres utilisations, faire 'man php' ou 'php --help' sous linux/BSD/OS X ou bien 'man php' sur google.

Pour exécuter un script sur n'importe quelle machine, on peut utiliser :

Code : Tout sélectionner

wget http://sous_domaine.domaine.tld/chemin_du_script/script.php >/dev/null
En spécifiant l'url du script. Avec wget on peut spécifier une url car wget est un programme qui télécharge des fichiers sur internet. Donc dans ce cas, quelquesoit l'url, même si le site est hébergé sur la même machine, il cherchera le serveur à appeler et fera une requète http vers apache, lequel exécutera le script et lui servira le résultat, lequel résultat sera renvoyé vers /dev/null puisque l'on n'en a pas besoin.

Mammouth du PHP | 881 Messages

07 sept. 2007, 04:57

Mais, mais, mais!!!!!

D'une simplicité et d'une clarté, celui-là!
Merci

Ça marche enfin.

:D :) :D
Soyez artisans de paix