Runtime, integridade e licenças
Cada operação inicia um worker Free Pascal separado. O PHP comunica-se por pipes com JSONL; não precisa de Node.js, npm instalado, Delphi, FFI ou ACBr Pro. O arquivo npm é apenas a embalagem da distribuição nativa pública fixada.
Distribuição aceita
| Dado | Valor fixado |
|---|---|
| Upstream | cosmemilton/acbr-node |
| Âncora do manifesto de publicação | 7330817e4628b5fb7b49d4c638cdc23da0228ce8 |
| Pacote nativo | cosmemilton-acbr-node-linux-x64, versão 0.2.1 |
| Plataforma | linux/x64, glibc |
| Revisão ACBr | 48590 |
| Tamanho do arquivo | 51682585 bytes |
SHA-256 do .tgz | 029e23b5fc05e0886a9e988300ef46811db0705f687109d114d34e87500d1b5f |
| SHA-256 do manifesto | d7e0bb150982daa3670d1ee8d6a1e0e1e422b2e213bc03c6ea8828ffea659414 |
| Hash do contrato | e5a497cefe8e0e350a30da5cc04e88b35c38a98535893d52f878890260d1346d |
| Inventário | 264 arquivos |
A versão do SDK é 0.1.0-alpha2; a versão nativa é 0.2.1. O commit acima ancora o manifesto de publicação; não é prova do commit de compilação do binário nem um gitHead npm. O manifesto de publicação tem SHA-256 24a776768fb02ec4afa6119ad96275f1a880a8f9f0d8a845e931b04420b91015.
A atualização 0.2.1 acrescenta 12 arquivos de licença em relação à 0.2.0. Os 252 arquivos anteriores, incluindo worker, fontes, bibliotecas e schemas, permanecem byte a byte iguais. Os novos arquivo e manifesto exigem pins próprios; testes históricos da 0.2.0 continuam identificados como históricos.
Esses valores provêm do pin versionado da biblioteca, cuja cópia confiável é o início da cadeia de integridade. Comparar hashes detecta divergência; não estabelece sozinho a confiança inicial no distribuidor nem impede um atacante com permissão para alterar o pacote PHP.
Download e instalação Linux
Após instalar o pacote PHP, escolha uma pasta física de runtime cujo diretório pai exista e seja controlado pelo administrador da aplicação. O exemplo abaixo usa caminhos que você deve adaptar; não é uma instrução para executar a aplicação como root.
curl --fail --location --proto '=https' --tlsv1.2 \
'https://registry.npmjs.org/cosmemilton-acbr-node-linux-x64/-/cosmemilton-acbr-node-linux-x64-0.2.1.tgz' \
--output /tmp/cosmemilton-acbr-node-linux-x64-0.2.1.tgz
php vendor/bin/acbr-php runtime:install \
/tmp/cosmemilton-acbr-node-linux-x64-0.2.1.tgz \
/opt/minha-aplicacao/acbr-runtime-0.2.1
php vendor/bin/acbr-php runtime:verify /opt/minha-aplicacao/acbr-runtime-0.2.1
php vendor/bin/acbr-php runtime:diagnose /opt/minha-aplicacao/acbr-runtime-0.2.1No checkout da biblioteca, substitua vendor/bin/acbr-php por bin/acbr-php. O instalador aceita arquivo .tgz ou diretório de runtime previamente verificado. Sem destino explícito, usa runtime/linux-x64 dentro do pacote PHP. Um destino existente gera RUNTIME_DESTINO_EXISTENTE; não é sobrescrito.
O instalador confere tamanho e hash antes de extrair, usa diretório temporário privado, rejeita travessia, caminhos absolutos, links, dispositivos e entradas extras, verifica o inventário e renomeia a pasta no mesmo sistema de arquivos. Nunca executa o motor. Reserve espaço para o arquivo de cerca de 52 MB, a instalação de cerca de 90 MB e uma área temporária equivalente.
Resolução do runtime
Ordem: argumento explícito da API; variável ACBR_RUNTIME_DIR; runtime/linux-x64 do pacote.
export ACBR_RUNTIME_DIR=/opt/minha-aplicacao/acbr-runtime-0.2.1
php vendor/bin/acbr-php runtime:verify
php vendor/bin/acbr-php runtime:diagnose
php vendor/bin/acbr-php runtime:releaseuse Acbr\Configuration;
use Acbr\Emitter;
$emissor = new Emitter(
new Configuration('11222333000181', 'CE', modelo: 55, ambiente: 2),
runtimeDirectory: '/opt/minha-aplicacao/acbr-runtime-0.2.1',
timeoutMs: 10000,
);
$emissor->fechar();runtime:verify e runtime:diagnose retornam JSON, com exit code 0 para sucesso, 1 para falha operacional e 2 para uso inválido. nativeExecutionChecked: false significa exatamente que o comando não executou o motor: integridade não comprova carregador/glibc, operação nativa nem homologação.
Permissões e ambiente
Passe um caminho físico: links simbólicos, inclusive ancestrais, são recusados. Um link de deploy como current não serve como caminho do runtime. Preserve o pacote e o runtime sem escrita por usuários não confiáveis; registre logs e temporários fora do inventário, que rejeita arquivos extras.
O processo filho recebe somente variáveis básicas permitidas (PATH, HOME, LANG, LC_ALL, TMPDIR, TMP, TEMP) e caminhos de bibliotecas/OpenSSL do próprio runtime. Variáveis arbitrárias, LD_PRELOAD e credenciais do processo PHP não são herdadas. A1/CSC são enviados explicitamente pelo stdin quando necessários.
Não altere pin, manifesto ou hashes para contornar erros. Uma nova versão exige revisão explícita da distribuição, do contrato e dos testes. Erros de integridade são detalhados em erros.
Redistribuição
O SDK declara LGPL-2.1-or-later. Preserve LICENSE, NOTICE, sources/ e licenses/ do runtime e os avisos das dependências ao redistribuir. Os arquivos de fonte/licença fazem parte do inventário aceito; removê-los quebra a verificação. Consulte as fontes e avisos. O projeto não é um pacote oficial do Projeto ACBr.