CRON avec fichier PHP non fonctionnel

Bonjour
J'ai vu des sujets comparables au mien mais ne répondant pas tout-à-fait au problème.
Voici :
je développe un blog sur Joomla, dans lequel un module envoie des mails en auto à ceux qui en font la demande. Trois CRON permettent de gérer l'envoi des emails.
Par exemple :
`wget -O --max-redirect=10000 /dev/null "http://www.en-lieu-et.place/index.php?option=com_contentnotifications&task=notifications.sendEmails&password=password"`
Lorsque je lance ce wget sur linux via la console tout marche parfaitement. Mais pas depuis un CRON.
Je passe par un fichier php lancé par le gestionnaire CRON OVH, dont voici le contenu :
#!/usr/local/bin/php
wget -O --max-redirect=10000 /dev/null "http://www.en-lieu-et.place/index.php?option=com_contentnotifications&task=notifications.createEmailQueue&password=password"
?>
Je n'ai pas d'erreur dans les logs OVH, mais rien ne se produit.
J'ai dû faire une erreur quelque part, mais impossible de savoir où.
Nota : mes fichiers php sont en autorisation 705.
Quelqu'un aurait-il une idée ?
Merci beaucoup !
Cyril


Lorsque je lance ce wget sur linux via la console tout marche parfaitement


C'est normal c'est une commande "terminal/console".

Chez OVH vous essayer de le lancer dans un script php ..

Pour la lancer en php, il vaut mieux passer via curl avec le code suivant.

>
> $url='http://site.fr/page.php';
$ch = curl_init();
> curl_setopt($ch, CURLOPT_URL, $url);
> curl_setopt($ch, CURLOPT_HEADER, 0);
> curl_setopt($ch_rech, CURLOPT_RETURNTRANSFER, true); // Retourne la réponse au lieu de l'afficher.
> curl_setopt($ch, CURLOPT_TIMEOUT_MS, 25000);
> curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
> curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
> $results = curl_exec($ch);
> curl_close($ch);

Bonjour,

ou alors lancer un bash en cron (il me semble que OVH le permet).

Cordialement, janus57

Bonjour
Merci de vos réponses, mais elles me laissent perplexe.
Problème du curl (outre que je ne comprends pas trop le fonctionnement) : la commande wget que je cherche à lancer est celle précisément que le module me demande de lancer via le crom de OVH. Si je mets autre chose, cela fonctionnera-t-il ?
Quant au bash, pourquoi pas, mais j'avoue ne pas comprendre ce qu'il s'agit de faire.
Je pensais (naïvement je le vois) qu'il me suffirait d'insérer le code wget destiné au cron dans un fichier php. (Le problème, à la base, est que le cron de OVH n'accepte pas la commande wget trop complexe du module. Sinon je ne serais pas passé par un fichier externe…) Du coup je suis ouvert à tout, si c'est plus complexe, mais j'avoue rester comme une poule devant un couteau… Pouvez-vous m'éclairer ?
Merci de votre aide !
Cyril


Problème du curl (outre que je ne comprends pas trop le fonctionnement) : la commande wget que je cherche à lancer est celle précisément que le module me demande de lancer via le crom de OVH. Si je mets autre chose, cela fonctionnera-t-il ?


oui, Curl et Wget font des choses similaires.. Il suffit de tester.

Quant au bash, pourquoi pas, mais j'avoue ne pas comprendre ce qu'il s'agit de faire.


Tu crée un fichier xxxxx.sh avec en première ligne :
#!/bin/bash
puis ta commande wgets

Merci beaucoup de vos réponses.
Je vais tester tout ça pour voir.
Le curl m'a l'air d'être très différent d'écriture, pas sûr que j'arrive à transformer mon code pour qu'il soit en correspondance…
Pour le bash, si je comprends bien, il fait la même chose que ce que je demandais au php ?
Je vois ce que je peux et je reviens vers vous !
Cyril

Bon, je n'ai pas eu le temps de modifier le wget pour l'adapter à du curl, mais j'ai tenté la méthode bash. En fait, ça revient au même que avec le php : le fichier sh est bien reconnu et lancé par OVH mais la ligne de code wget ne donne rien…
Faut-il ajouter quelque chose ?
Merci encore !
Cyril

Pour curl,
tu remplaces $url='http://site.fr/page.php';
par l'url de ta page et c'est tout. Les autres options sont facultatives à mon avis ..

Bonjour,

pourquoi s'amuser avec du whet/curl alors que vous avez juste à faire un appel cron avec "index.php?option=com_contentnotifications&task=notifications.sendEmails&password=password".

Je rappel que le cron est capable de chercher des fichiers locaux normalement, donc pourquoi passer par l'extérieur quand on peu tout faire en interne ?

Cordialement, janus57

Le cron du mutualisé ne prend pas les paramètres il me semble.

Bonjour,

donc du coup le plus rapide reste quand même le bash (vu que c'est du bête copier/coller de la docs du module), mais sans logs ou fichier difficile de dire.

Cordialement, janus57

Merci de vos réponses.
En effet le cron du mutualisé ne prends pas les variables.
Pour le curl je vais tenter ça demain.
Pour le bash, le problème est le même que pour le php : rien ne se produit. Et pourtant le log montre bien que le chemin d'accès est le bon.
Bonne soirée !
Cyril

et si tu postez le code entier que tu tapes ?


Pour le bash, le problème est le même que pour le php : rien ne se produit


As-tu bien rendu le fichier exécutable ?

Pour Buddy : oui j'ai testé en posant le code dans OVH - CRON : il ne l'accepte pas.
Pour Daniel60 : j'avais oublié ! Je les mets en 705 via ftp et je vous tiens au courant ! Merci !

Bon alors voilà : le sh, avec une autorisation à 705, rien ne change.
Le log montre que c'est pris en compte :
[2017-06-19 17:02:04] ## OVH ## START - 2017-06-19 17:02:04.587429 executing: /usr/local/php7.0/bin/php /homez.184/sauvenay/./en-lieu-et.place/cli/sendemail.sh
[2017-06-19 17:02:04] wget -O --max-redirect=10000 /dev/null "http://www.en-lieu-et.place/index.php?option=com_contentnotifications&task=notifications.sendEmails&password=password"
[2017-06-19 17:02:04] ## OVH ## END - 2017-06-19 17:02:04.672260 exitcode: 0
Mais ça ne répond pas au niveau du module Joomla. J'essaie avec le CURL pour voir.
J'avoue être de plus en plus perdu…
Merci !
Cyril


executing: /usr/local/php7.0


Pas correct, ton sh n'est pas du php. Tu dois indiquer "Autre" dans ton Cron.

Arh ! Bien sûr ! Merci !

Par ailleurs j'ai du coup testé le curl avec ce fichier php :

$ curl -O --max-redirect=10000 /dev/null "http://www.en-lieu-et.place/index.php?option=com_contentnotifications&task=notifications.createEmailQueue&password=password

Ca ne passe pas mieux. Décidément rendre exécutable le contenu d'un php, pas simple ! J'ai lu qu'il existait une commande exec{… Ca vous dit quelque chose ? J'ai testé, mais sans succès (même moins d'ailleurs, le CRON ne le validait pas !)