aruiz0922 Posted September 14, 2022 Share Posted September 14, 2022 (edited) Buenas a todos. Soy nuevo en prestashop y estoy empezando con la API, de momento bien pero estoy teniendo problemas al obtener blank schemas de algunos resources, en 15 de los 70 posibles el servidor me devuelve el error "This call to PrestaShop Web Services failed and returned an HTTP status of 500. That means: Internal Server Error", es una instalación limpia de Prestashop Prestashop 1.7.8.6 PHP 7.4.28 Resources que dan error: attachment, carts, categories, combinations, customers, customer_threads, customizations, manufacturers, order_details, order_slip, orders, product_options, products, supply_orders y warehouses. Este es el error p.e. en orders: HTTP REQUEST HEADER GET //api/orders?schema=blank HTTP/1.1 Host: kit1.example.com Authorization: Basic OVQ3Q1VaWVBQTFRMWDVQODVHWlZUU0ZGSDlGQUE1Slg6 Accept: */* HTTP RESPONSE HEADER HTTP/1.1 500 Internal Server Error Date: Wed, 14 Sep 2022 08:31:58 GMT Server: Apache/2.4.53 (Debian) Access-Time: 1663144318 X-Powered-By: PrestaShop Webservice PSWS-Version: 1.7.8.6 Execution-Time: 0.007 Content-Sha1: cf663b2f7b73f0da43139eef17228652a00d0e36 Set-Cookie: PrestaShop-950383588b671a3073f0a00f5126f5e3=def5020088608d2a95b96b505e2b85e00f2c4a635ea3a55a41d26c43e23a25ca9be15a34a25ec782906590f2914969ed39aecac21edfd786c15d72237fa51b35a4630734a09c9c78a98be4893dc76acc247474ae6d52830b2a42cdfa941f3878d50dd1655132ebc2f88079cd72d54faeca5641e30d3aa3d452a1b0a15232917356c609b049419846e8d7720ebe517eb586c751f4784fd8237c43d530b8ee20057050f7fe3b1dbd403e74282b7798f7a1ff5354e7bf6cbc1965a98c309b5ef95c8d95ac2a989687c2e84c991ba5852bd66cef3e6d244c4257b1; expires=Tue, 04-Oct-2022 08:31:58 GMT; Max-Age=1728000; path=/; domain=kit1.infortisa.com; secure; HttpOnly; SameSite=Lax Content-Length: 2936 Connection: close Content-Type: text/xml;charset=utf-8 RETURN HTTP BODY <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 716)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> <error> <code><![CDATA[5]]></code> <message><![CDATA[[PHP Notice #8] Trying to access array offset on value of type null (/var/www/kit1/classes/webservice/WebserviceOutputBuilder.php, line 719)]]></message> </error> </errors> </prestashop> {"error":"1","msg":"This call to PrestaShop Web Services failed and returned an HTTP status of 500. That means: Internal Server Error."} Alguna idea? Gracias. Edited September 14, 2022 by aruiz0922 (see edit history) Link to comment Share on other sites More sharing options...
aruiz0922 Posted September 21, 2022 Author Share Posted September 21, 2022 He probado a instalar un Prestashop limpio, versión 1.7.8.7 en un servidor nuevo con versión de PHP 7.4.30, el problema sigue presente tanto si lo instala con los datos de demo o vacío. La solución de momento es tener los blank schemas en una carpeta y cargarlos desde ahí, preferiría poder cargarlos directamente desde la API por tener el schema siempre actualizado, pero la verdad es que al tenerlos descargados previamente evito una llamada al webservice y se mejora el rendimiento. En cualquier caso, si alguien da un poco de luz sobre este tema, se lo agradezco. Link to comment Share on other sites More sharing options...
RafaEno Posted December 29, 2022 Share Posted December 29, 2022 (edited) Buenas, ya se que ha pasado mucho tiempo pero acabo de iniciar con Prestashop y he tenido el mismo problema que tienes tu y lo he podido solucionar. Después de mirar el código del fichero WebserviceOutputBuilder.php encontré que si un recurso tiene asociaciones no se captura correctamente ya que intenta obtener un valor de un array que es null y obviamente no puede acceder a la posición del 'id'. El error lo encontré en el siguiente método: protected function renderFlatAssociation($object, $depth, $associations, $ws_params) Este es el fragmento que produce el error: if ($field_name == 'id' && !isset($field['sqlId'])) { $field['sqlId'] = 'id'; $field['value'] = $object_assoc['id']; // No se comprueba que sea distinto de null } elseif (!isset($field['sqlId'])) { $field['sqlId'] = $field_name; $field['value'] = $object_assoc[$field_name]; // Igual aquí } La solución es cambiar esa condición, quedando como lo siguiente: // Este fragmente de código lo he sacado de una versión más moderna de Prestashop, en concreto la 8.0.0 if ($field_name == 'id' && !isset($field['sqlId'])) { $field['sqlId'] = 'id'; $field['value'] = isset($object_assoc['id']) ? $object_assoc['id'] : null; // Ahora se comprueba que no sea null } elseif (!isset($field['sqlId'])) { $field['sqlId'] = $field_name; $field['value'] = isset($object_assoc[$field_name]) ? $object_assoc[$field_name] : null; // Aquí igual } Como puedes ver el cambio es mínimo, pero esto me ha solucionado el problema y me devuelve el schema de cualquier recurso que tiene asociaciones. Espero te sea de ayuda, me disculpo si algo esta mal. Como he dicho soy nuevo en Prestashop, un saludo. Edited December 30, 2022 by RafaEno He ido a la solución del asunto, el codigo de GitHub (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now