[Résolu] API Rest - erreur 404 pour générer token

Bonjour à tous,
Sur une version 6.0 de dolibarr, j’active le module REST API et j’essaye de générer mon token en me connectant sur le lien correspondant :
http://monasso.fr/gestion/api/index.php/login?login=monlogin&password=monmotdepasse
Mais rien à faire, j’arrive toujours sur la même page :

[code]


404
Not Found

Routes.php:458 at route stage get route negotiate message [/code]

J’ai bien sûr vérifié et mon url, et mon login, et mon mot de passe, mais rien n’y fait. Que ce soit en http ou en https. Cela pourrait-il venir de mon serveur ?
Merci d’avance pour votre aide

Je me réponds. Sur un autre dolibarr, en utilsant l’explorer, j’arrive bien à obtenir un token.
D’ailleurs, on peut aussi obtenir un token depuis utilisateur / modifier / clé API
Bref, pour un autre dolibarr ça fonctionne.

Par contre sur le dolibarr en question, ça ne marche toujours pas. D’ailleurs lorsque j’essaie de passer par l’explorer d’api, je n’ai qu’une page blanche avec un header vert, et je n’ai pas les liens GET / POST vers /login/

C’est bien embêtant…qui aurait une idée de l’origine du problème ?
Merci d’avance pour votre aide

Hum…J’ai bien l’impression que ça vient de l’hébergeur et du serveur. Je suis chez o2swicht sur différents mutualisés et en fait j’ai plusieurs dolibarr qui réagissent comme cela. L’installation qui fonctionne est sur un autre hébergement.

Avec cette hypothèse supplémentaire, quelqu’un a-t-il une idée de l’origine de cela ? Que devrais-je vérifier avec le support ?
Merci d’avance pour votre aide

Dans le fichier htdocs/api/class/api.class.php essaie de remplacer la lige

    $this-\>r-\>setBaseUrls(...

par les 3 suivantes:

    $urlwithouturlrootautodetect=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim(DOL_MAIN_URL_ROOT));
    $urlwithrootautodetect=$urlwithouturlroot.DOL_URL_ROOT; // This is to use local domain autodetected by dolibarr from url
    $this-\>r-\>setBaseUrls($urlwithouturlroot, $urlwithouturlrootautodetect);

Bonjour Eldy,
Merci pour ton aide !
Je vais regarder cela dès que possible !

Dans l’intervalle, je suis passé sur une 6.02 qui intègre déjà apparemment les corrections que tu me proposes, mais ce n’est pas mieux…
J’ai par contre dans api/error_log le warning suivant :
[18-Oct-2017 16:00:20 UTC] PHP Warning: date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‹ UTC › for now, but please set date.timezone to select your timezone. in /home/cpie54/public_html/gestion/includes/restler/framework/Luracast/Restler/PassThrough.php on line 80

Est-ce que ça pourrait être à l’origine de cela ?
Merci d’avance pour ton aide

Cela ne fait pas de mal de corriger ce probleme pour en etre sur.
Il faut en effet compléter la configuration de php pour renseigner le parametre
date.timezone
Par exemple avec la valeur « UTC » ou « Europe/Paris ».

Sinon, essayer aussi avec la 6.0.3 mais de mémoire, les corrections des pb connus sur REST API sont en 6.0.2

Non je n’ai plus rien sur les logs et j’ai fait la MAJ sur la 6.03 sans plus de succès…je deviens chèvre…
Une autre idée ? une autre piste ?
Merci d’avance

je viens de déménager tout le dolibarr sur un autre serveur. Je suis passé d’un mutualisé chez o2switch à un vps chz o2switch et sur le vps tout fonctionne bien…je pense qu’il y a un firewall ou quelque chose comme cela qui bloque l’api sur les mutualisés… je vais voir avec le support

Bonjour à tous,
Je continue le post tout seul, mais ça pourra peut être en aider d’autres.
Au final c’est le mode de php du serveur qui posait problème.
il a fallu forcé l’utilisation de PHP 5.6 et changer le mode de gestion de PHP pour forcer phpcgi.
Pour une raison que j’ignore, cela ne semble pas fonctionner avec le mode de gestion classique lsphp (lsapi).
Je précise que suis chez o2switch et que la méthode pour faire cela est détaillée ici https://faq.o2switch.fr/hebergement-mutualise/gestion-web/choisir-version-php-et-php-ini
Bon on perd php7 et cgi va moins vite, mais au moins ça fonctionne
et que le support fait vraiment bien son boulot et se casse la tête pour nous aider.
Bon courage si vous avez un problème similaire

1 « J'aime »

Bonjour Akene,

Je suis dans la même config que toi, chez O2switch
J’ai donc repassé ma version php en 5.6.

Mais je n’ai pas un meilleur résultat. Comment forces-tu le phpcgi ? Dans le php.ini ?
De même, tu écrits que tu as vu un warning dans le fichier log api/error.log; où est-ce ?

Merci
Cordialement

Je suis sous Dolibarr 7.0.2 chez 1and1 et je rencontre le même souci et voici la solution que j’ai trouvée dans le ticket GitHub suivant : https://github.com/Dolibarr/dolibarr/issues/7623

Elle consiste à modifier le fichier /htdocs/api/index.php avec le contenu fourni ici :
https://raw.githubusercontent.com/7PH/dolibarr/develop/htdocs/api/index.php

Concrètement, cette modification fait un traitement différent des requêtes HTTP à deux moments pour permettre leur bonne décomposition puis un bon routage :

  1. On utilise $_SERVER[REQUEST_URI] au lieu de $_SERVER[PHP_SELF] pour déterminer l’URI à décomposer en vue de son routage.
  2. C’est là qu’il y a un élément important (absent de la précédente version) : on fait un explode l’URI pour extraire l’identifiant de la bonne route que l’on réaffecte correctement vers le routeur. Ceci a pour conséquence de rediriger correctement l’appel (on surmonte l’erreur 404) avec les bons paramètres (qui étaient déjà bien identifiés dans la précédente version)

En espérant que ceci puisse aider certains d’entre nous.

Bonjour,
je rencontre le même problème que cité précédemment, j’ai des 404 à chaque fois que j’essaye d’accéder à l’api rest.
j’ai eu beau appliquer vos solutions les unes après les autres, rien n’y fait…

ma particularité, c’est que mon serveur web est nginx donc je ne sais pas pourquoi cela aurait un impact.

merci d’avance de l’aide que vous pourriez m’apporter.