Page 1 sur 2

CRON pour exécuter du php

Posté : 04 sept. 2007, 19:42
par stefane321
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!

Posté : 04 sept. 2007, 20:11
par jojolapine
Essaye simplement de remplacer <? par <?php ?

Hé non!

Posté : 04 sept. 2007, 20:27
par stefane321
Hummm, c'est pas ça l'erreur.

Merci!

une autre idée?

Posté : 04 sept. 2007, 20:57
par zeus
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 ;)

Posté : 04 sept. 2007, 20:59
par zeus
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
?>

Oui

Posté : 04 sept. 2007, 20:59
par Invité
C'est la première chose que j'ai faite avant même de penser le faire exécuter par CRON.

Posté : 04 sept. 2007, 21:01
par stefane321
Le post invité c'est moi j'ai pas remarqué que j'étais déconnecté.

Et quel extension je donnerais à ce fichier?

Posté : 04 sept. 2007, 22:38
par zeus
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 ?

Posté : 05 sept. 2007, 01:13
par stefane321
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.

Posté : 05 sept. 2007, 02:14
par icebreak
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

Posté : 05 sept. 2007, 08:00
par zeus
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

Posté : 07 sept. 2007, 03:36
par Invité
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.

Posté : 07 sept. 2007, 03:39
par Patriboom
Le message précédent est de moi.

Merci

Posté : 07 sept. 2007, 04:15
par Sékiltoyai
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.

Posté : 07 sept. 2007, 04:57
par Patriboom
Mais, mais, mais!!!!!

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

Ça marche enfin.

:D :) :D