Bonjour à tous,
Je rencontre le même problème sur une update de dolibarr 10.0.1
J’ai bien généré un clé api pour le super utilisateur, et que je la saisisse dans l’explorer ou non, j’ai ça :
{« messages »:["attribute paths is not of type object
"],« schemaValidationMessages »:[{« level »:« error »,« domain »:« validation »,« keyword »:« type »,« message »:« instance type (array) does not match any allowed primitive type (allowed: [« object »]) »,« schema »:{« loadingURI »:« http://swagger.io/v2/schema.json#",« pointer »:"/definitions/paths"},« instance »:{« pointer »:"/paths »}}]}
auriez vous une solution ?
ksar
Septembre 18, 2019, 8:26
2
Bonjour,
Vous essayez d’acceder à quelle adresse ?
Bonjour,
Quand j’accède à l’URL : https://domaine/htdocs/api/index.php/explorer
quand j’entre dolikey est appui sur explorer rien s’affiche
Cordialement
Bonjour,
auriez vous une solution ?
Bonjour,
Quel est le serveur Web utilisé ? Apache2 ou nginx ?
Vérifier aussi les logs serveurs (PHP).
Bonjour,
Le serveur utiliser est nginx :
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$request_uri;
}
# REST API support
location /htdocs/api {
if ( !-e $request_filename) {
rewrite ^.* /htdocs/api/index.php last;
}
}
location ~ \.php$ {
fastcgi_pass xxxxxxxxx-sock;
fastcgi_index index.php;
fastcgi_read_timeout 180;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PHP_VALUE open_basedir="/home/xxxxxxx/www:/tmp";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Dolibarr Rest API path support
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
include fastcgi_params;
}
C’est sûr qu’il y a un truc pas clair avec l’API REST quand le serveur Web utilisé est nginx (j’en ai fait les frais également).
Je pense qu’il faudrait voir au niveau du code pour faire définitivement un FIX sous forme d’une PR GitHub car les différentes bidouilles pour définir le PATH / PATH_INFO / PATH_TRANSLATED ne sont pas hyper perennes.
Voici la config que j’ai pour un nginx 1.16.1 sous Debian Buster :
location ~ [^/]\.php(/|$) {
fastcgi_read_timeout 180;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_index index.php;
include fcgi.conf;
fastcgi_pass xxxxxxxxxxxx.sock;
}
Avec cette config, chez moi pas de soucis (mais peut-être que ça ne fonctionnera pas chez vous ;))
Quelle est la distrib et comment nginx a t’il été installé (dépôts de la distrib ou dépôts officiels de nginx) ?
bonjour,
quand j’utilise votre configuration j’ai le message : API not found (failed to include API file)
nginx version: nginx/1.17.3
cat /etc/yum.repos.d/nginx.repo
#--------------- On CentOS 7 ---------------
[nginx]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
je suis sur centos : CentOS Linux release 7.7.1908 (Core)
Et en laissant include fastcgi_params; au lieu de include fcgi.conf; ?
Quelque part, vu que c’est une CentOS, ça ne m’étonne pas que ça soit différent, par contre, là tout de suite je n’en ai pas sous la main pour tester
eldy
Octobre 11, 2019, 3:19
10
Pourquoi avoir rajouté ceci ?
REST API support
location /htdocs/api {
if ( !-e $request_filename) {
rewrite ^.\* /htdocs/api/index.php last;
}
}
Normalement on a juste à avoir un un handler sur la racine de dolibarr. Le chemin /api étant une url de dolibarr comme les autres.
je trouver ca sur internet, en plus ca fonctionnent bien avant que fasse un mise à jour de dolibarr vers 10.0.2
Laygen
Octobre 25, 2019, 8:59
12
Bonjour,
J’ai ouvert une PR sur GitHub qui permet de résoudre le problème. La solution n’est peut être pas la plus optimale mais elle mérite d’être fonctionnelle: https://github.com/Dolibarr/dolibarr/pull/12089
Bonjour,
merci beaucoup pour votre réponse
je fais les modifications, mais ça fonctionnent toujours pas pour moi
{"messages":["attribute paths is not of type `object`"],"schemaValidationMessages":[{"level":"error","domain":"validation","keyword":"type","message":"instance type (array) does not match any allowed primitive type (allowed: [\"object\"])","schema":{"loadingURI":"http://swagger.io/v2/schema.json#","pointer":"/definitions/paths"},"instance":{"pointer":"/paths"}}]}
Laygen
Octobre 25, 2019, 1:35
14
Est-il possible de voir votre fichier index.php dans votre dossier /api/index.php
Vous avez bien mis à jour les deux preg_match avec $url ?
Dolibarr:develop
← eoxia-jimmy:develop
opened 02:49PM - 10 Oct 19 UTC
Dolibarr:develop
← eoxia-jimmy:develop
opened 02:49PM - 10 Oct 19 UTC
Oui, je télécharger le dossier qui vous avez modifier ( commit 2c06969 ) api entier et je le écraser avec le nouveau.
Laygen
Octobre 25, 2019, 2:00
16
Est-il possible de rajouter en dessous de la ligne 42 la ligne ci-dessous:
var_dump( $url );
Ensuite actualiser la page de l’exploreur de l’API /explorer: <votresite>/api/index.php/explorer
Et ensuite copier coller le premier message afficher en haut de page (qui sera blanche du coup), de mon coté:
http://127.0.0.1/dolibarr/api/index.php/explorer/
de mon cote le var_dump($url)
[code]
string(21) « /htdocs/api/index.php »[/code
Laygen
Octobre 25, 2019, 2:53
18
La valeur ne correspond pas à la valeur attendu.
On vas continuer de chercher ensemble, c’est pratique pour avancer;
Que donne un:
var_dump($_SERVER['SCRIPT_URI']);
(Toujours au niveau de la même ligne)
var_dump($_SERVER['SCRIPT_URI']) : NULL
var_dump($_SERVER['PHP_SELF']) : string(21) "/htdocs/api/index.php"
ma config nginx :
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$request_uri;
}
# REST API support
location /htdocs/api {
if ( !-e $request_filename) {
rewrite ^.* /htdocs/api/index.php last;
}
}
location ~ \.php$ {
fastcgi_pass dolibarr.fr-sock;
fastcgi_index index.php;
fastcgi_read_timeout 180;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PHP_VALUE open_basedir="/home/dolibarr.fr/www:/tmp";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Dolibarr Rest API path support
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
include fastcgi_params;
}
Laygen
Octobre 25, 2019, 4:26
20
Je pense qu’il faudrait revenir a la configuration par défaut de nginx