Fiz a instalação do pacote através do link GitHub - nuvem-fiscal/nuvemfiscal-sdk-php: Biblioteca para uso da API da Nuvem Fiscal com PHP., e ele gera o arquivo vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/Model/Dps.php. Porém o nome da classe dentro do arquivo é DPS, e usando via Linux ocorre erro de classe não encontrada.
Depois que renomeei Dps para DPS funcionou.
Conseguem ajustar isso?
Qual é o erro, exatamente, e o código utilizado? Você renomeou o fonte do SDK ou o seu próprio fonte?
O erro era de class not found.
Renomeei o fonte do SDK, porque se olhar o arquivo que mencionei em cima, do SDK, que fica em lib/Model/Dps.php, o nome do arquivo é Dps, somente com a primeira em maiúscula, mas dentro dele, onde tem a definição da classe, está como class DPS implements ModelInterface, ArrayAccess, \JsonSerializable
, com todas as letras em maiúscula.
Não irá funcionar enquanto a escrita não estiver na mesma caixa, para quem usa linux ou wsl, em windows vai normal.
Sim, mas como você está usando a classe? O nome do arquivo não precisa ter o mesmo nome da classe. Basta você fazer referências explícitas com o nome correto do arquivo e o nome correto da classe.
Segue um exemplo de uso:
Estou usando docker, com a imagem FROM php:8.1-apache
.
Ocorre os seguintes alertas e erros:
**Warning**: include(/var/www/html/vendor/composer/../nuvem-fiscal/nuvemfiscal-sdk-php/lib/Model/DPS.php): Failed to open stream: No such file or directory in **/var/www/html/vendor/composer/ClassLoader.php** on line **582**
**Warning**: include(): Failed opening '/var/www/html/vendor/composer/../nuvem-fiscal/nuvemfiscal-sdk-php/lib/Model/DPS.php' for inclusion (include_path='.:/usr/local/lib/php') in **/var/www/html/vendor/composer/ClassLoader.php** on line **582**
**Warning**: include(/var/www/html/vendor/composer/../nuvem-fiscal/nuvemfiscal-sdk-php/lib/Model/DPS.php): Failed to open stream: No such file or directory in **/var/www/html/vendor/composer/ClassLoader.php** on line **582**
**Warning**: include(): Failed opening '/var/www/html/vendor/composer/../nuvem-fiscal/nuvemfiscal-sdk-php/lib/Model/DPS.php' for inclusion (include_path='.:/usr/local/lib/php') in **/var/www/html/vendor/composer/ClassLoader.php** on line **582**
**Fatal error**: Uncaught Error: Class "\NuvemFiscal\Model\DPS" not found in /var/www/html/vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/ObjectSerializer.php:463 Stack trace: #0 /var/www/html/vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/ObjectSerializer.php(490): NuvemFiscal\ObjectSerializer::deserialize(Object(stdClass), '\\NuvemFiscal\\Mo...', NULL) #1 /var/www/html/vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/Api/NfseApi.php(3163): NuvemFiscal\ObjectSerializer::deserialize(Object(stdClass), '\\NuvemFiscal\\Mo...', Array) #2 /var/www/html/vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/Api/NfseApi.php(3096): NuvemFiscal\Api\NfseApi->emitirNfseDpsWithHttpInfo(Object(NuvemFiscal\Model\NfseDpsPedidoEmissao)) #3 /var/www/html/public/nuvemfiscal_nfse_teste.php(103): NuvemFiscal\Api\NfseApi->emitirNfseDps(Object(NuvemFiscal\Model\NfseDpsPedidoEmissao)) #4 {main} thrown in **/var/www/html/vendor/nuvem-fiscal/nuvemfiscal-sdk-php/lib/ObjectSerializer.php** on line **463**
Infelizmente não detectamos nenhum problema aqui nos nossos testes. Seu código funciona normalmente. Testamos no Linux sem problemas.
Talvez seja alguma configuração no seu PHP, ou no composer. Ele que está tentando carregar um arquivo DPS.php
que não existe, independente das classes que estão declaradas nele.
Qual a versão do seu composer? Tentou fazer uma limpeza geral e/ou iniciar um novo projeto do zero?
De qualquer forma vamos alterar o SDK para que o arquivo fique com o mesmo nome da classe, incluindo maiúsculas e minúsculas.
Nome do arquivo corrigido.
Este tópico foi fechado automaticamente 24 horas depois da última resposta. Novas respostas não são mais permitidas.