Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Consultores
Postado

Olá pessoal,

Segue um tutorial de como configurar o ambiente de desenvolvimento de php para utilizar as bibliotecas do ACBr.
Uma informação importante é que a comunicação com as bibliotecas é feita através da extensão FFI.

Limitação: 
* A FFI foi implementado na versão 7.4.0, versões anteriores não possuem esse recurso.

A seguir segue passo-a-passo para configuração do ambiente de desenvolvimento.

1. Início

1.1. IDE

  • Você pode utilizar a IDE de sua preferência.
  • Utilizaremos aqui o Visual Studio Code (VSCode).

1.2. Requisitos

1.2.1. Instalar o Visual c++redistributable package 2015, caso ainda não o tenha instalado em seu ambiente

2. Instalando o PHP 8

  • Baixar a última versão do php em: https://www.php.net/downloads
  • Acesse o link Windows downloads
  • Baixe o "zip" da última versão TS(Thread Safe) na mesma arquitetura do seu computador
  • Exemplo para x64: VS16 x64 Thread Safe
  • A diferença entre a versão e a TS(Thread Safe) e NTS(Non Thread Safe) é que a TS suporta servidores multithreaded.

2.1. Extrair o zip, copiar a pasta para c:\ e remeie para um caminho mais curto

  • Neste caso, que está na versão 8, ficará C:\php8

2.2. Vamos utilizar o arquivo ini padrão de configurações: C:\php8\php.ini-development

  • Renomeie para php.ini
  • Abra o arquivo para as próximas configurações

2.3. Extensões

2.3.1. Localizar a chave extension_dir e descomentar essa chave para indicar de onde buscar as extensões, que serão localizadas na pasta "ext", dentro da pasta do php: C:\php8\ext

extension_dir = "ext"

Obs: 

  • Em um cenário de testes, foi necessário colocar o caminho completo da pasta para o php conseguir acessar as extensões
  • Caso tenha problemas com alguma extensão, tente colocar o caminho completo
extension_dir = "C:\php8\ext"

2.3.2. Localizar as chaves "extension"

  • Para utilizar as extensões que deseja, remover os comentários (ponto e vírgula no início da linha) das extensões que precisar

2.3.2.1. Extensão ffi para consumo das dlls do ACBr

extension=ffi

2.3.2.2. Manipulação de strings pelo php

extension=mbstring

2.4. Outras configurações

2.4.1. Diretório temporário, descomentar a seguinte linha e preencher o caminho de arquivos temporários do Windows

session.save_path = "C:/Windows/Temp"

2.4.2. Localizar a chave error_reporting = E_ALL e preencher conforme abaixo

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

2.4.3. Localizar ffi.enable e preencher com true

ffi.enable = true

2.4.4. Caso não esteja habilitada, habilitar a exibição de erros

display_errors = On

2.5. Debug

  • A opção de debug não é obrigatória, mas facilita muito o desenvolvimento
  • Verifique se sua IDE suporta a opção

2.5.1. XDebug

  • Acessar https://xdebug.org/download/historical
  • Baixe a versão de "Windows binaries" relacionada a versão do php que foi instalada
  • Neste cenário de testes, vamos baixar a PHP 8.3 VS16 TS (64 bit), pois foi instalado o php TS(Thread Safe)
  • Renomeie a dll baixada para php_xdebug.dll e salve em c:\php8\ext

2.5.1.1. Adicionar no final do arquivo a seção Xdebug com as linhas abaixo

[Xdebug]
zend_extension="C:\php8\ext\php_xdebug.dll"
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.log=C:\php8\log\xdebug.log

2.5.2. VSCode

  • Instalar a extesão: PHP Debug
  • Origem: xdebug.org
  • Selecione a extensão, e clique em "Install" à direita

2.5.2.1. Criar uma pasta ".vscode" dentro da pasta do projeto 

  • Exemplo: \Projeto\.vscode

2.5.2.1.1. Criar um arquivo "launch.json" dentro da pasta ".vscode" com o conteúdo abaixo: 

  • No nosso exemplo, que o projeto estará na raiz do Apache ficará: C:\Apache24\htdocs\.vscode\launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        }
    ]
}

2.5.2.2. Ao debugar, se ocorrer o erro: php executablenote found. Install PHP and add it to your PATH or set the php.debug.executablePath setting

  • Configurar o php no PATH do windows
  • Clique no Menu Iniciar e escreva Variáveis
  • Clique em Editar as variáveis de ambiente do sistema
  • Na aba Avançado, da tela de Propriedades do Sistema, clique no botão Variáveis de Ambiente
  • No GroupBox de baixo Variáveis do sistema, selecione a Path e clique no botão Editar, abaixo do quadro
  • Clique em Novo e preencha o caminho da pasta do php, seguindo nosso cenário: c:\php8
  • Clique em OK para confirmar e nas duas telas anteriores para fechar
  • Reinicie o computador para garantir que a alteração no Path foi efetivada

3. Instalar o Apache

3.1. Extrair o zip, copiar a pasta Apache24 para c:\

  • Ficará c:\Apache24\

3.2. Abra o arquivo de configurações: C:\Apache24\conf\httpd.conf 

3.2.1. Localizar "Define SRVROOT" e confirmar se está apontando para onde salvou a pasta do Apache "c:/Apache24"

Define SRVROOT "c:/Apache24"

3.2.2. Porta de acesso

  • Localize a chave Listen
  • Se a porta 80 estiver em uso indique qual porta será utilizada, senão mantenha a padrão Listen 80
Listen 80

3.2.3. Localize a chave ServerName 

  • Preencha com localhost e a porta que você configurou no item 3.2.2
ServerName localhost:80

3.3. Instalar o apache como serviço

  • Pelo prompt, acessar a pasta C:\Apache24\bin\
  • Executar o comando: httpd.exe -k install
  • Caso apareça tela do firewall do Windows, clicar em permitir

3.3.1. Para visualizar o serviço instalado, acesse os serviços do windows e procure por Apache2.4

  • Para acessar os serviços, abra a tela de Executar (teclas Windows + R), preencha services.msc e clique em OK
  • Localize o Apache2.4, ele estará como inicialização automática, mas ainda não estará iniciado, clique com o botão direito e clique em Iniciar
  • Para iniciar o serviço pelo prompt, acessar a pasta C:\Apache24\bin\, utilize o comando httpd -k start

3.3.2. Para verificar se o serviço está ok, acesse o navegador e navegue em localhost

  • Caso nos passos 3.2.2 e 3.2.3 você tenha configurado uma porta diferente da 80, acesse localhost:sua porta.
  • Ex: Para a porta 8080 acesse localhost:8080
  • Se aparecer "It works!", o Apache está funcionando

3.4. Configurar para acessar o php

3.4.1. Localize a chave LoadModule e adicione a nova linha para indicar o caminho da dll do php+apache

LoadModule php_module "C:/php8/php8apache2_4.dll"

3.4.2. Localize DirectoryIndex que por padrão está aénas index.html, adicione index.php antes do index.html

DirectoryIndex index.php index.html

3.4.3. Localize a chave AddType e adicione a linha para ele conhecer as extensões que irá processar

AddType application/x-httpd-php .php .html

3.4.4. Um pouco mais abaixo, localize a chave AddHandler

  • Adicionar o manipulador de cabeçalho
AddHandler application/x-httpd-php .php
  • Adicionar o caminho do arquivo php que vai processar
Action application/x-httpd-php "C:/php8/php-cgi.exe"

3.4.5. No final do arquivo, configurar o caminho da pasta do php

PHPIniDir "C:/php8"

3.4.6. Configurar também o Timeout

Timeout 180

3.4.7. Testando o php no Apache

  • Primeiro reinicie o serviço do Apache para as últimas configurações feitas relacionadas ao php
  • Siga os passos do item 3.3.1 e clique na opção Reiniciar o Serviço ou pelo prompt, acessar a pasta C:\Apache24\bin\ e execute o comando httpd -k restart

3.4.7.1. Acesse a pasta C:\Apache24\htdocs\ e crie o arquivo index.php

  • Adicione o conteúdo a seguir e salve o arquivo
<?php phpinfo();

3.4.7.2. Abra o navegador e acesse novamente localhost

  • Deverá abrir uma página contendo as informações do php, iniciando pela versão instalada

3.4.7.3. Pesquise por XDebug

  • Encontre o grupo de informações do XDebug para verificar se também foi configurado com sucesso

4. Testando o programa de exemplo do ACBr

4.1. Baixe os fontes do ACBr, seguindo as instruções do tópico a seguir: https://projetoacbr.com.br/fontes/

4.2. Acesse os arquivos dos programas de exemplo para php da ACBrLib: ..\ACBr\Projetos\ACBrLib\Demos\PHP\

  • Copie o conteúdo da pasta ..\ACBr\Projetos\ACBrLib\Demos\PHP\ConsultaCNPJ para C:\Apache24\htdocs\

4.3. Copiando as dlls da ACBrLib e suas dependências

  • Veja o tópico a seguir para maiores detalhes, caso ainda não esteja familiarizado com o ambiente das bibliotecas ACBr

 

4.3.1. Download

4.3.1.1. Links para download das bibliotecas, versões PRO e Demo

4.3.1.1.1 Link Geral ACBr Pro: https://www.projetoacbr.com.br/forum/files/category/36-acbrlib-pro/

  • Link direto para a ACBrLibConsultaCNPJ

 

4.3.1.1.2. Link Geral ACBr Demo: https://www.projetoacbr.com.br/forum/files/category/63-acbrlib-demo/

  • Link direto para a ACBrLibConsultaCNPJ

 

4.3.2. Extraindo a dll da biblioteca

  • Vamos tomar como exemplo a versão Demo
  • Extraia o conteúdo do arquivo baixado e acesse a pasta bin
  • Copie a versão da Lib equivalente à arquitetura da sua instalação do php para as respectivas pastas ST (Single Thread) e MT(Multi Thread)

4.3.2.1. Primeiro vamos pegar a biblioteca para o programa de exemplo ST

  • Acesse a pasta ..\bin\Cdecl\ e copie a dll referente à arquitetura da sua instalação do php
  • Para o nosso exemplo, que é a versão 64 bits, vamos copiar a dll ..\bin\Cdecl\ACBrConsultaCNPJ64.dll
  • Copie a dll para C:\Apache24\htdocs\ST\ACBrLib\x64

4.3.2.2. Vamos agora copiar a versão MT

  • Acesse a pasta ..\bin\MT\Cdecl\ e copie a dll referente à arquitetura da sua instalação do php
  • Para o nosso exemplo, que é a versão 64 bits, vamos copiar a dll ..\bin\MT\Cdecl\ACBrConsultaCNPJ64.dll
  • Copie a dll para C:\Apache24\htdocs\MT\ACBrLib\x64

4.3.3. Dependências

4.3.3.1. OpenSSL

  • Seguindo o mesmo critério da arquitetura do php, vamos copiar as dlls da OpenSSL para ambas as pastas dos demos
  • No nosso cenário de 64 bits, vamos copiar as dlls da pasta ..\dep\OpenSSL\x64 para as pastas C:\Apache24\htdocs\ST\ACBrLib\x64 e C:\Apache24\htdocs\MT\ACBrLib\x64

4.3.3.2. LibXML2

  • Para a ACBrConsultaCNPJ a LibXML2 não é necessária e não é distribuída no pacote, mas caso esteja seguindo este tutorial para outras bibliotecas, de DFes por exemplo, isso será necessário
  • No nosso cenário de 64 bits, devemos copiar as dlls da pasta ..\dep\LibXml2\x64 para as pastas C:\Apache24\htdocs\ST\ACBrLib\x64 e C:\Apache24\htdocs\MT\ACBrLib\x64

5. Testando os programas de exemplo

5.1. Para testar as versões ST e MT, acesse respectivamente:
http://localhost/ACBrConsultaCNPJST.php
http://localhost/ACBrConsultaCNPJMT.php

  • Lembrando que, caso tenha configurado uma porta diferente da 80 no Apache, ela deve ser adicionada na url
  • Exemplos da porta 8080

http://localhost:8080/ACBrConsultaCNPJST.php
http://localhost:8080/ACBrConsultaCNPJMT.php

image.png

image.png

6. Debugando com o VSCode

6.1. Para debugar os fontes php você pode colocar um ponto de parada posicionando na linha desejada e clicando em "F9" ou, com o mouse, clicar do lado esquerdo da numeração da linha

  • O ponto será identificado com uma bolinha vermelha
  • Para iniciar o debug, acesse o menu Run / Start Debugging ou pressione F5
  • O VSCode passará a escutar os retornos do XDebug e irá habilitar uma pequena barra para as interações
  • Agora que o VSCode está com o debug ativo, acesse o programa de exemplo, acione o método que colocou o ponto de parada e utilize os botões da barra de debug ou as teclas de atalho que podem ser vistas ao passar o mouse sobre cada botão

É isso pessoal, esperamos que esse novo conteúdo seja útil para a comunidade e caso tenham dúvidas, sugestões estaremos sempre prontos para atendê-los em nosso canais.

Até mais!!!

image.png

 

  • Curtir 8
  • Obrigado 2
  • 4 meses depois ...
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.