Bonjour,
J'ai un fichier cron.php qui s'exécute parfaitement si j'y accède par son url web, mais qui échoue si je le fait exécuter par une tâche cron.
Le problème, c'est que OVH ne donne absolument aucune information sur l'erreur. Tout ce que je sais, grâce aux logs, c'est que j'ai un "exitcode: 255". Je ne comprends pas comment un développeur est sensé déboguer avec ce pauvre indice, surtout quand la tâche cron ne peut être exécuté qu'une fois par heure?
Quel est l'origine du problème de l'erreur "exitcode: 255" ? J'ai beaucoup de lignes et pas mal de fichiers, sans erreur je sais pas où chercher, c'est ridicule.
- Est-ce que c'est parce que mon script retourne des var_dump que cela plante?
- Est-ce que parce que le script a du mal avec un chemin lorsqu'il est utilisé en tâche cron?
Merci d'avance :)
Hébergements Web - Tâche cron - exitcode: 255
Related questions
- Connexion à mon compte client
149371
13.02.2019 09:51
- Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS
124101
03.09.2018 14:46
- reCAPTCHA erreur pour le propriétaire du site : clé de site non valide
108595
14.02.2019 16:17
- [FAQ] Comment mettre à jour mon site pour supporter Apache 2.4 ?
96043
28.07.2017 11:39
- Passage en php 7.4
95079
30.06.2020 05:05
- Augmenter taille PHP Post Max Size sur mutualisé ?
89302
04.12.2019 21:52
- The requested URL / was not found on this server
88569
02.03.2017 18:25
- NextCloud sur mutualisé
88362
07.04.2017 08:42
- Deploy d'un projet Node JS
88330
12.10.2016 20:18
- Ce site est inaccessible Impossible de trouver l'adresse DNS du serveur
88051
16.10.2016 16:24
Bonjour,
ce sont des chemins relatifs dans le script ?
Cordialement, janus57
Bonjour Janus,
J'ai envoyé mon message initial par erreur, sans l'achever.... Je voulais partager le code ci-dessous. Ce sont les deux seuls endroits ou il y a des require_once().
1) Appel à spl_autoload_register().
spl_autoload_register(static function (string $fqcn) {
// $fqcn contient Domain\Forum\Message
// remplaçons les \ par des / et ajoutons .php à la fin.
// on obtient Domain/Forum/Message.php
$path = str_replace('\\', '/', $fqcn) . '.php';
// puis chargeons le fichier
if (file_exists(__DIR__.'/'.$path)) {
require_once(__DIR__.'/'.$path);
}
});
use App\Domain\Utils\Utils;
Notes:
J'utilise des `use` (par exemple: `use App\Domain\Utils\Utils` en haut de certains de mes fichiers php). L'appel à spl_autoload_register() permet de charger les fichiers requis. Par exemple la ligne `use App\Domain\Utils\Utils;` va charger automatiquement le fichier `App/Domain/Utils/Utils.php`.
2) require_once __DIR__.'/../vendor/autoload.php';
namespace App;
require_once __DIR__.'/../vendor/autoload.php';
use App\Domain\Database\Mysql;
use App\Domain\Utils\Utils;
use App\Domain\History\Log;
use App\Domain\Rapidapi\ScrapeNinja;
class App
{
...
La moche ligne `require_once __DIR__.'/../vendor/autoload.php'` me permet de charger un package que j'ai installé via composer. Ce n'est probablement pas la bonne méthode, mais malgré ma patience et mes recherches je n'ai pas trouvé comment charger ce fichier autrement pour l'utiliser avec une tâche cron.
Voilà, ce sont vraiment les deux endroits ou j'include des fichiers. Le problème vient de là tu penses?
Bonjour,
En mettant ces lignes au tout début de votre script, les erreurs seront visibles dans les logs.
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', '1');
Merci je vais essayer ca ! Plus qu'à attendre 40 minutes
Et si votre cron invoquait la page web plutôt que le script ?
Ainsi votre script sera exécuté dans l'environnement du serveur web.
Je ne suis pas sûr de comprendre? Le champ _Commande à exécuter_ ne permet pas de mettre d'URL

Ou alors tu veux dire que la tâche exécute par exemple trucmuche.php et que dans trucmuche.php je fais un appel curl à cron.php qui lui va exécuter tout le code?
Tu lances une tâche de type shell, (exemple.sh)
Ce fichier exemple.sh pourrait contenir :
#!/bin/bash
wget -o /dev/null -O /dev/null https://tonsite.com/exemple.php
et mettre la permission execute sur ce fichier
Je ne pense pas avoir accès à ça avec mon offre pro2014