Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas ao consumir Servidor Rest Construir um servidor rest utilizando o Adianti pro conforme video só que no momento que tento testar receber a seguinte mensagem: ( ! ) Warning: file_get_contents(localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25): failed to open stream: No error in C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php on line 9 ...
RR
Problemas ao consumir Servidor Rest  
Construir um servidor rest utilizando o Adianti pro conforme video só que no momento que tento testar receber a seguinte mensagem:


( ! ) Warning: file_get_contents(localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25): failed to open stream: No error in C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php on line 9
Call Stack
# Time Memory Function Location
1 0.0010 122456 {main}( ) ...teste2.php:0
2 0.0011 123328 file_get_contents ( 'localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25' ) ...teste2.php:9
Dump $_SERVER

$_SERVER['REMOTE_ADDR'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string '127.0.0.1' (length=9)

$_SERVER['REQUEST_METHOD'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'GET' (length=3)

$_SERVER['REQUEST_URI'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string '/adianti-template-5.7.0/template/teste2.php' (length=43)

Variables in local scope (#1)

$location =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'localhost:8080/adianti-template-5.7.0/template/rest.php' (length=55)

$parameters =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:
array (size=3)
'class' => string 'ClientesService' (length=15)
'method' => string 'load' (length=4)
'ID_CLI' => string '25' (length=2)

$url =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25' (length=99)

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:null

Não conseguir descobrir o porque deste problema, peço humildemente a ajuda de alguem.

Desde já agradeço pela atenção!

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


NR

Como se trata de uma ulr, tente adicionar "" antes de localhost, caso contrário a função file_get_contents vai interpretar como sendo o caminho para um arquivo ao invés de uma página php.
Mais detalhes:
https://www.php.net/file_get_contents
NR

*"Como se trata de uma url, tente adicionar "H T T P : / /" antes de localhost"...

Acho que por questão de segurança o trecho anterior foi removido
RR

Ainda continuo com o mesmo error, segue o codigo que estou utilizando
  1. <?php
  2. // load object by id
  3. $location "/adianti-template-5.7.0/template/rest.php";
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['ID_CLI'] = '25';
  8. $url $location '?' http_build_query($parameters);
  9. var_dumpjson_decodefile_get_contents("http://localhost:8080",false,$location) ) );
RR

E quando mudei o codigo para este baixo:
  1. <?php
  2. // load object by id
  3. $location "http://localhost:8080/adianti-template-5.7.0/template/rest.php";
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['ID_CLI'] = '25';
  8. $url $location '?' http_build_query($parameters);
  9. var_dumpjson_decodefile_get_contents($location) ) );
  10. Recebo a seguinte mensagem:
  11. C:\EasyPHP-Devserver-17\eds-www\adianti-template-5.7.0\template\teste2.php:9:
  12. object(stdClass)[1]
  13.   public 'status' => string 'error' (length=5)
  14.   public 'data' => string 'Permissão negada' (length=17)
  15. Alguma idéia de como resolver?
  16. Desde já agradeço
RR

Só para complementar a informação, fiz um teste com o proprio microERP do adianti o que percebi foi o seguinte:
Quando executo usando o banco padrão do microERP funciona perfeitamente as consultas, mas quando mudo para acessar o banco de dados FireBird ele me gerar a mensagem "Permissão Negada".
Fiz um programa para conectar no banco sem ser atraves do rest e conectou e puxou dados normalmente.

Algem tem idéia do que seja o problema e como resolver?
NR

Dentro do arquivo rest.php tem uma verificação que pode retornar "permissão negada":
  1. <?php
  2. if (get_parent_class($class) !== 'Adianti\Service\AdiantiRecordService')
  3. {
  4.        return json_encode( array('status' => 'error''data'   => _t('Permission denied')));
  5. }
  6. ?>

Confirme se é essa validação que está retornando erro.
RR

O problema persiste fiz todas as etapas pelo proprio adianti-studio-pro e o resultado é sempre o mesmo null

Lembrando que o bando de dados que estou utilizando é Firebird.

Este é o link que tento executar localhost:8080/adianti-template-5.7.0/template/teste.php

Este é o retorno do link após executar: C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste.php:10:null
***********************************************************************************
Este é o codigo do teste.php
  1. <?php
  2. // load object by id
  3. $location 'http://localhost:8080/adianti-template-5.7.0/template/rest.php';
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['id'] = '25';
  8. $url $location '?' http_build_query($parameters);
  9. var_dumpjson_decodefile_get_contents($url) ) );
  10. *****************************************************************************************************************
  11. Este é o codigo gerado pelo Adianti do rest
  1. <?php
  2. /**
  3.  * Clientes REST service
  4.  */
  5. class ClientesService extends AdiantiRecordService
  6. {
  7.     const DATABASE      'firebird';
  8.     const ACTIVE_RECORD 'Clientes';
  9.     
  10.     /**
  11.      * load($param)
  12.      *
  13.      * Load an Active Records by its ID
  14.      * 
  15.      * @return The Active Record as associative array
  16.      * @param $param['id'] Object ID
  17.      */
  18.     
  19.     
  20.     /**
  21.      * delete($param)
  22.      *
  23.      * Delete an Active Records by its ID
  24.      * 
  25.      * @return The Operation result
  26.      * @param $param['id'] Object ID
  27.      */
  28.     
  29.     
  30.     /**
  31.      * store($param)
  32.      *
  33.      * Save an Active Records
  34.      * 
  35.      * @return The Operation result
  36.      * @param $param['data'] Associative array with object data
  37.      */
  38.     
  39.     
  40.     /**
  41.      * loadAll($param)
  42.      *
  43.      * List the Active Records by the filter
  44.      * 
  45.      * @return Array of records
  46.      * @param $param['offset']    Query offset
  47.      *        $param['limit']     Query limit
  48.      *        $param['order']     Query order by
  49.      *        $param['direction'] Query order direction (asc, desc)
  50.      *        $param['filters']   Query filters (array with field,operator,field)
  51.      */
  52.     
  53.     
  54.     /**
  55.      * deleteAll($param)
  56.      *
  57.      * Delete the Active Records by the filter
  58.      * 
  59.      * @return Array of records
  60.      * @param $param['filters']   Query filters (array with field,operator,field)
  61.      */
  62. }
  63. O que pode ser?
MG

Olá
Estou tento o mesmo problema de permissão negada de chamadas vindas de Flutter/DIO.
O endereço de chamada possui h t t p no inicio e mesmo assim, dá permissão negada.
Estou quase desistindo de usar REST no Adianti.
HD

Eu também enfrentei o problema de permissão negada, mas eu estava errando na rota rewrite do NGINX, agora só um detalhe... na recuperação do token, a função array_walk_recursive lança um WARNING:

<pre><br/><b>Warning</b>: array_walk_recursive()expectsparameter1tobearray, stringgivenin<b>/home/helquisson/www/simulapro/rest.php</b>online<b>50</b><br/>{ "status": "success", "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiaW5zdGZha2UiLCJ1c2VyaWQiOjU4LCJ1c2VybmFtZSI6Ikluc3RpdHVpXHUwMGU3XHUwMGUzbyBGYWtlIiwidXNlcm1haWwiOiJpbnN0ZmFrZUBnbWFpbC5jb20iLCJleHBpcmVzIjoxNjA0NTA5MjMwfQ.PuBGNDPb1TSLGS3mkqW82AxDDXaCUCZZwcaNWv6Eds4" }


O $response retorna uma string... e a função espera um array... então eu ajustei com:

  1. <?php
  2. if(is_array($response)) {
  3.     array_walk_recursive($response, ['AdiantiStringConversion''assureUnicode']);
  4. ?>
</pre>