anúncios

Mostrando postagens com marcador PHP. Mostrar todas as postagens
Mostrando postagens com marcador PHP. Mostrar todas as postagens

quarta-feira, 11 de setembro de 2024

Configurando ambiente de desenvolvimento PHP no macOS

O presente post, irá ajudá-lo a configurar um ambiente de desenvolvimento PHP no macOS, incluindo a instalação do PHP, Composer, MySQL e uma ferramenta de gerenciamento de banco de dados.

  1. Instalar o Homebrew
  2. Primeiro, certifique-se de ter o Homebrew instalado. Caso não tenha, execute o seguinte comando no Terminal para instalá-lo:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    Verifique se o Homebrew foi instalado corretamente, verificando sua versão:

    brew --version

  3. Instalar o PHP
  4. Com o Homebrew instalado, você pode facilmente instalar o PHP com o seguinte comando:

    brew install php

    Verifique a instalação do PHP com:

    php -v

  5. Instalar o Composer
  6. O Composer é um gerenciador de dependências para PHP. Para instalá-lo, execute:

    brew install composer

  7. Instalar o MySQL
  8. Para instalar o MySQL, execute:

    brew install mysql

    Inicialize o serviço MySQL para rodar o servidor local:

    brew services start mysql

  9. Instalar o DBeaver (Cliente de Banco de Dados)
  10. O DBeaver é uma ferramenta que suporta múltiplos SGBDs, como MySQL, PostgreSQL, Oracle e MS SQL Server. Para instalá-lo, execute:

    brew install --cask dbeaver-community

  11. Testar o PHP
  12. Crie um arquivo info.php no seu diretório pessoal (/Users/saitam) com o seguinte conteúdo:

    info.php

    <?php phpinfo();

    Agora, no terminal, inicie o servidor embutido do PHP:

    php -S 0.0.0.0:8000

    Abra o navegador e acesse:

    http://localhost:8000/info.php

    Após visualizar a página de informações do PHP, pressione Ctrl + C no terminal para encerrar o servidor.

  13. Criar um Projeto Laravel
  14. Para criar um novo projeto Laravel, execute o comando:

    composer create-project laravel/laravel nome-projeto

    Acesse o diretório do projeto criado:

    cd nome-projeto

    Em seguida, inicie o servidor do Laravel com:

    php artisan serve

    Acesse no navegador o endereço:

    http://localhost:8000

    Feito!

terça-feira, 13 de agosto de 2024

The Defense of PHP: Demystifying the Concept of Quick Fix

In the vast landscape of programming languages, PHP often finds itself labeled pejoratively as a "language of quick fixes." This characterization, however, is not only unjust but also an oversimplification that does not do justice to the rich history and capabilities of this language.

Firstly, it is imperative to recognize that the term "quick fix" suggesting improvised and often inelegant solutions is not an inherent attribute of a specific language. On the contrary, the quality of code and the elegance of technical solutions are reflections of the programmer's practices and skill, not the tools they use. It is a gross misconception to believe that a programming language alone is prone to low-quality coding practices. Each language has its own paradigms and conventions, and PHP, with its flexibility and accessibility, is no exception.

PHP, created with the specific purpose of facilitating the development of dynamic web applications, has evolved significantly since its inception. From its initial version to its most modern iterations, the language has incorporated robust improvements and new functionalities, promoting safer and more efficient programming practices. The advent of features such as namespaces, strict data types, and powerful integration with modern frameworks demonstrates a maturation that goes beyond superficial criticisms.

It is therefore important to distinguish between the language itself and the skill of the programmer. PHP offers a vast arsenal of functionalities and a rich library of frameworks, such as Laravel and Symfony, which are testaments to its evolution and capacity to support complex and sophisticated projects. The success of these frameworks is proof that, when used appropriately, PHP is capable of sustaining the construction of robust and well-structured systems.

Criticism directed at PHP often reflects a lack of understanding of the role it plays today. Like other languages, PHP is a tool and like any tool, its value and effectiveness depend on how it is used. Disparaging the language due to inadequate programming practices is a simplification that fails to recognize PHP's potential when applied with competence.

In summary, PHP is a language that, far from being the embodiment of quick fixes, has proven to be a solid and reliable force in web development. The true challenge lies not in the language itself, but in the skill and dedication of the programmers who use it. It is through continuous improvement and the careful application of good practices that one can transcend the stigma of "quick fixes" and demonstrate the true value of any programming language.

Done!

sexta-feira, 12 de abril de 2024

Por que o Docker é a escolha superior do que XAMPP e Laragon no desenvolvimento PHP?

O mundo do desenvolvimento web está em constante evolução, e com ele, surgem novas ferramentas e tecnologias destinadas a tornar o processo de desenvolvimento mais eficiente e produtivo. No contexto do ambiente de desenvolvimento PHP, o Docker emerge como uma opção superior em comparação ao XAMPP e Laragon, oferecendo uma série de vantagens que não podem ser ignoradas.

  1. Isolamento e consistência do ambiente:
  2. Uma das maiores vantagens do Docker é sua capacidade de fornecer ambientes de desenvolvimento isolados e consistentes. Enquanto o XAMPP e o Laragon dependem de instalações diretas no sistema operacional do usuário, o Docker empacota aplicativos e suas dependências em contêineres leves e independentes. Isso significa que cada projeto PHP pode ter seu próprio ambiente isolado, com versões específicas de PHP, bibliotecas e extensões, garantindo consistência entre ambientes de desenvolvimento, testes e produção.

  3. Gerenciamento de dependências simplificado:
  4. Com o Docker, o gerenciamento de dependências torna-se muito mais simples e flexível. Em vez de lidar com instalações manuais de bibliotecas e extensões, os desenvolvedores podem especificar as dependências necessárias em um arquivo de configuração (como o Dockerfile) e construir um contêiner personalizado com todas as dependências necessárias. Isso facilita a reprodução do ambiente de desenvolvimento em diferentes máquinas e elimina as dores de cabeça associadas à resolução de dependências.

  5. Escalabilidade e portabilidade:
  6. Outra vantagem do Docker é sua escalabilidade e portabilidade. Os contêineres Docker podem ser facilmente escalados horizontalmente para lidar com aumentos de carga de tráfego, e podem ser implantados em qualquer lugar que suporte Docker, seja em servidores locais, na nuvem ou em ambientes de desenvolvimento compartilhados. Isso proporciona uma flexibilidade sem precedentes para desenvolvedores PHP que desejam criar, testar e implantar aplicativos em uma variedade de ambientes.

  7. Integração com ferramentas de DevOps:
  8. O Docker se integra perfeitamente com ferramentas populares de DevOps, como Kubernetes, Jenkins, GitHub GitHub Actions, Bitbucket Pipelines e GitLab CI/CD. Isso permite a automação de processos de construção, teste e implantação, tornando o ciclo de vida de desenvolvimento mais eficiente e previsível. Além disso, a capacidade de empacotar aplicativos em contêineres simplifica a implantação e o dimensionamento em ambientes de produção, melhorando a confiabilidade e a disponibilidade dos aplicativos PHP.

Considerações finais:

Embora o XAMPP e o Laragon tenham sido escolhas populares para desenvolvedores PHP no passado, o Docker emergiu como a escolha superior em termos de eficiência, flexibilidade e escalabilidade. Ao fornecer ambientes de desenvolvimento isolados, gerenciamento simplificado de dependências, escalabilidade e portabilidade, e integração com ferramentas de DevOps, o Docker capacita os desenvolvedores PHP a criar aplicativos web de forma mais rápida, confiável e escalável. Portanto, para aqueles que buscam o melhor em ambiente de desenvolvimento PHP, o Docker se destaca como a solução ideal.

Feito!

domingo, 26 de dezembro de 2021

Configurando PHP 8 com OCI8 no ambiente Docker

O objetivo deste howto é explicar os procedimentos de configuração para subir rapidamente um ambiente com Apache, PHP 8 e Oracle Client no Docker

A premissa é ter o Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker Compose no Linux (qualquer distro) ou Instalando Docker no Windows 10

Segue os procedimentos:

$ mkdir -p $HOME/ambiente-php8-oci8-docker $HOME/ambiente-php8-oci8-docker/src

$ cd $HOME/ambiente-php8-oci8-docker

Criar o arquivo docker-compose.yml com o conteúdo abaixo:

docker-compose.yml


version: "3"
services:
  php5.6-oci8:
   image: slatrach/php8-oci8-apache
   container_name: php8-oci8
   ports:
      - "8000:80"
   volumes:
      - ./src:/var/www/html

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

O diretório src é o volume do HOST mapeado com o CONTAINER, onde ficará os códigos fontes do projeto.

Executar o build e execução do ambiente na raiz do diretório ambiente-php8-oci8-docker

$ docker-compose up -d

Aguarde e após estiver OK, verifique o status com o comando $ docker ps

Crie um arquivo info.php no diretório src (volume mapeado entre HOST e CONTAINER)

<?php
phpinfo();

No browser acesse http://localhost:8000/info.php>/p>

Verifique se o módulo OCI8 está habilitado no PHP.

Pronto, ambiente PHP 8 com OCI8 configurado rapidamente.

Feito!

terça-feira, 7 de dezembro de 2021

Configurando PHP 5.6 com OCI8 no ambiente Docker

O objetivo deste howto é explicar os procedimentos de configuração para subir rapidamente um ambiente com Apache, PHP 5.6 e Oracle Client 12 no Docker

Apesar da versão PHP 5.6 ser muito antiga e não ter mais suporte, mas se tratando em sistemas legados que utilizam essa versão, é o meio mais rápido de subir um ambiente PHP 5.6 com OCI8.

A premissa é ter o Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker Compose no Linux (qualquer distro) ou Instalando Docker no Windows 10

Segue os procedimentos:

$ mkdir -p $HOME/ambiente-php5.6-oci8-docker $HOME/ambiente-php5.6-oci8-docker/src

$ cd $HOME/ambiente-php5.6-oci8-docker

Criar o arquivo docker-compose.yml com o conteúdo abaixo:

docker-compose.yml


version: "3"
services:
  php5.6-oci8:
   image: thomasbisignani/docker-apache-php-oracle
   container_name: php5.6-oci8
   ports:
      - "8000:80"
   volumes:
      - ./src:/var/www/html

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

O diretório src é o volume do HOST mapeado com o CONTAINER, onde ficará os códigos fontes do projeto.

Executar o build e execução do ambiente na raiz do diretório ambiente-php5.6-oci8-docker

$ docker-compose up -d

Aguarde e após estiver OK, verifique o status com o comando $ docker ps

Crie um arquivo info.php no diretório src (volume mapeado entre HOST e CONTAINER)

<?php
phpinfo();

No browser acesse http://localhost:8000/info.php>/p>

Verifique se o módulo OCI8 está habilitado no PHP.

Pronto, ambiente PHP 5.6 com OCI8 configurado rapidamente.

Feito!

segunda-feira, 8 de março de 2021

Configurando o Jetstream Laravel no Docker

O que é Jetstram Laravel?

O Jetstream fornece o ponto de partida para seu próximo projeto incluindo login, registro, verificação de e-mail, autenticação de dois fatores, gerenciamento de sessão, suporte de API via Laravel Sanctum e gerenciamento de usuários

O objetivo deste post é explicar os procedimentos de configuração do Jetstream a partir do ambiente PHP 8 com Apache e SGBD MySQL no Docker

Após criar o ambiente PHP 8 com Apache e SGBD MySQL no Docker , segue os procedimentos abaixo:

Primeiro acessar o diretório do ambiente e subir o ambiente PHP 8 com Apache e SGBD MySQL, conforme segue:

$ docker-compose up -d

Se utilizou o mesmo ambiente PHP 8 com Apache e SGBD MySQL no Docker , tem o Adminer, que é uma ferramenta web de administração de diversos SGBDs, nesse caso o SGBD MySQL.

Acessar o Adminer no browser http://localhost:8080 e crie o banco de dados com o nome que preferir

Após criar o banco de dados, acessar o container php8-apache para instalar o Laravel

$ docker exec -it php8-apache bash

Instalar o Laravel via composer, definir o nome como app, mas geralmente é colocado o nome do projeto

$ composer create-project --prefer-dist laravel/laravel app

Após concluir a instalação do Laravel, saia do container php8-apache, digite exit

No diretório do ambiente PHP 8 que configurou, dentro deste diretório deve ter um diretório src, que é o volume mapeado entre HOST e CONTAINER.

$ cd ambiente-php8-apache-mysql-docker/src

Aqui deve ter o diretório definido na instalação do Laravel, nesse caso app, mas antes é necessário alterar o owner do diretório para o seu usuário.

$ sudo chown -R ambiente-php8-apache-mysql-docker/ seu-usuario:seu-usuario

Renomear o .env.example para .env no editor de sua preferência

DB_HOST=db #nome do serviço container MySQL
D_PORT=3306 # porta default do MySQL
DB_DATABASE=nome-banco-de-dados #mesmo nome do banco de dados criado na ferramenta Adminer
DB_USERNAME=root #nome de usuário do banco de dados definido no docker-compose do ambiente PHP 8
DB_PASSWORD=secret #password do usuário do banco de dados definido no docker-compsoe do ambiente PHP 8

Acessar o container php8-apache novamente

$ docker exec -it php8-apache bash

Dentro do container, acessar o diretório app e execute os procedimentos

$ cd app

Gerar a chave para o projeto via artisan do Laravel

php artisan key:generate

Adicionar a biblioteca Jetstream no projeto com Laravel

composer require laravel/jetstream

Adicionar a biblioteca Livewire para complementar o frontend no projeto Laravel com Jetstream

php artisan jetstream:install livewire

Adicione o times do Jetstream com Livewire, que é como organização de usuários.

php artisan jetstream:install livewire --teams

Execute as migrations para criar as tabelas no banco de dados criado anteriormente pela ferramenta Adminer

php artisan migrate

Instalação do Node.js e NPM via NVM (gerenciador de versões do Node.js)

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash

source ~/.bashrc && nvm install v14.15.5

npm install && npm run dev

chown -R www-data:www-data storage

Saia do container php8-apache, digite exit

No browser, acesse http://app.intranet:8000 crie um novo usuário no link "register", após criar o usuário irá autenticar e redirecionar no dashboard automaticamente.

Referências


Laravel 8 Jetstream no Docker

Feito!

segunda-feira, 15 de fevereiro de 2021

Configurando o HumHub no ambiente Docker

O que é HumHub ?

HumHub é um sistema de comunicação e colaboração que permite tornar em uma rede social na intranet, gratuito e de código aberto, desenvolvido em PHP com framework Yii.

O objetivo deste post é explicar os procedimentos para subir o ambiente HumHub no Docker com a imagem container oficial disponibilizada no Docker Hub

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ mkdir $HOME/ambiente-humhub-docker && cd $HOME/ambiente-humhub-docker

Crie o arquivo docker-compose.yml, conforme o conteúdo abaixo

docker-compose.yml
version: '3.1'
services:
humhub:
image: mriedmann/humhub:1.6.2
links:
- "db:db"
ports:
- "8080:80"
volumes:
- "config:/var/www/localhost/htdocs/protected/config"
- "uploads:/var/www/localhost/htdocs/uploads"
- "modules:/var/www/localhost/htdocs/protected/modules"
environment:
HUMHUB_DB_USER: user
HUMHUB_DB_PASSWORD: secret

db:
image: mariadb:10.2
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: humhub
MYSQL_USER: user
MYSQL_PASSWORD: secret
volumes:
- "./db:/var/lib/mysql"

Executar o build e execução do ambiente HumHub na raíz do diretório ambiente-humhub-docker

OBS: Antes de executar, verifique se as portas 8080 (Nginx), 9000 (FPM) e 3306 (MySQL) estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, acesse no browser http://localhost:8080 e segue as etapas, selecione o idioma, verifique o status de requisitos necessários, informe o host, usuário, password e nome do banco de dados que foram definidos no arquivo docker-compose em db. Por fim, algumas definições de segurança e criação do usuário administrador e seu password.

Referências


https://github.com/mriedmann/humhub-docker

Feito!

sábado, 6 de fevereiro de 2021

Configurando ambiente de desenvolvimento PHP 8 com Nginx no Docker

O objetivo deste howto é explicar os procedimentos de configuração do ambiente de desenvolvimento PHP 8 com JIT habilitado, composer, Nginx, Adminer e SGBD MySQL 8 no Docker.

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ cd $HOME
$ mkdir -p ambiente-php8-nginx-mysql-docker && cd ambiente-php8-nginx-mysql-docker
$ mkdir -p php8-fpm php8-fpm/config nginx src db

Os diretórios src, db são volumes mapeados entre o HOST e CONTAINER

O diretório ambiente-php8-nginx-mysql-docker/src é onde estará os fontes do projeto no HOST que irá mapear no diretório /var/www/html no CONTAINER

O diretório ambiente-php8-nginx-mysql-docker/db é onde está os arquivos do banco de dados no HOST que irá mapear no diretório /var/lib/mysql no CONTAINER

Se não tiver o volume db ao encerrar, o banco de dados irá para o espaço, pois o container é volátel.

Criar o Dockerfile para o PHP

php8-fpm/Dockerfile

FROM php:8.0.1-fpm-buster
RUN docker-php-ext-install pdo pdo_mysql bcmath opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
EXPOSE 9000
ENTRYPOINT ["php-fpm"]

Criar os arquivos de configuração do PHP

Habilitar o JIT

php8-fpm/config/jit.ini

opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = 1235
opcache.jit_debug = 0

Configurar o timezone, use conforme o seu fuso horário da sua região

php8-fpm/config/timezone.ini

date.timezone = "America/Sao_Paulo"

Criar o arquivo default.conf do Nginx no diretório ambiente-php8-nginx-mysql-docker/nginx/config

server {
  listen 80;
  index index.php index.html;
  root /var/www/html;
  server_name localhost;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(./+)$;
    fastcgi_pass php-fpm:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }

  location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
  }
}

Criar o arquivo docker-compose.yml na raiz do diretório ambiente-php8-nginx-mysql-docker

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

docker-compose.yml

version: '3'
services:
  php-fpm:
    build: ./php8-fpm
    container_name: php8-fpm
    volumes:
      - ./src:/var/www/html
      - ./php8-fpm/config/jit.ini:/usr/local/etc/php/conf.d/jit.ini
      - ./php8-fpm/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini
  nginx:
    image: nginx:1.19.6
    restart: always
    ports:
      - "8000:80"
    volumes:
      - "./src:/var/www/html"
      - "./nginx/default:/etc/nginx/conf.d/default.conf"
    depends_on:
      - php-fpm

  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - "./db:/var/lib/mysql"

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080


Executar o build e execução do ambiente na raiz do diretório ambiente-php8-nginx-mysql-docker

OBS: Antes de executar, verifique se as portas 8000 (Nginx), 9000 (FPM), 8080 (Adminer) e 3306 (MySQL) estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, crie um arquivo ambiente-php8-nginx-mysql-docker/src/info.php

<?php
  phpinfo();

Acesse no browser http://localhost:8000/info.php e para gerenciar bancos de dados http://localhost:8080

Usos gerais no container no ambiente

Para verificar logs do container php8-fpm

$ docker logs php8-fpm  

Para acessar o container similar o acesso SSH

$ docker exec -it php8-fpm bash

Para instalar alguma lib/framework via composer no container php8-fpm

Acesse o diretório ambiente-php8-nginx-mysql-docker/src e execute para iniciar um novo projeto com framework Laravel

$ docker exec -it php8-fpm composer create-project laravel/laravel

Referências

Ambiente PHP 8 com Nginx no Docker

Feito!

quarta-feira, 3 de fevereiro de 2021

Configurando ambiente de desenvolvimento PHP 8 com Apache no Docker

O objetivo deste howto é explicar os procedimentos de configuração do ambiente de desenvolvimento PHP 8 com JIT habilitado, composer, Apache, Adminer e SGBD MySQL 8 no Docker.

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ cd $HOME
$ mkdir -p ambiente-php8-apache-mysql-docker && cd ambiente-php8-apache-mysql-docker
$ mkdir -p php8-apache php8-apache/config src db

Os diretórios src, db são volumes mapeados entre o HOST e CONTAINER

O diretório ambiente-php8-apache-mysql-docker/src é onde estará os fontes do projeto no HOST que irá mapear no diretório /var/www/html no CONTAINER

O diretório ambiente-php8-apache-mysql-docker/db é onde está os arquivos do banco de dados no HOST que irá mapear no diretório /var/lib/mysql no CONTAINER

Se não tiver o volume db ao encerrar, o banco de dados irá para o espaço, pois o container é volátel.

Criar o Dockerfile para o PHP

php8-apache/Dockerfile

FROM php:8.0.1-apache-buster
RUN docker-php-ext-install pdo pdo_mysql bcmath opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer


Criar os arquivos de configuração do PHP

Habilitar o JIT

php8-apache/config/jit.ini

opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = 1235
opcache.jit_debug = 0

Configurar o timezone, use conforme o seu fuso horário da sua região

php8-apache/config/timezone.ini

date.timezone = "America/Sao_Paulo"

Criar o arquivo docker-compose.yml na raiz do diretório ambiente-php8-apache-mysql-docker

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

docker-compose.yml

version: "3"
services:
  php-apache:
    container_name: php8-apache
    build: ./php8-apache
    ports:
      - "8000:80"
    volumes:
      - ./src:/var/www/html
      - ./php8-apache/config/jit.ini:/usr/local/etc/php/conf.d/jit.ini
      - ./php8-apache/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - "./db:/var/lib/mysql"
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Executar o build e execução do ambiente na raiz do direitório ambiente-php8-apache-mysql

OBS: Antes de executar, verifique se as portas 8000, 8080 e 3306 estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, crie um arquivo ambiente-php8-apache-mysql/src/info.php

<?php
  phpinfo();

Acesse no browser http://localhost:8000/info.php e para gerenciar bancos de dados http://localhost:8080

Usos gerais no container no ambiente

Para verificar logs do container php8-apache

$ docker logs php8-apache  

Para acessar o container similar o acesso SSH

$ docker exec -it php8-apache bash

Para instalar alguma lib/framework via composer no container php8-apache

Acesse o diretório ambiente-php8-apache-mysql-docker/src e execute para iniciar um novo projeto com framework Laravel

$ docker exec -it php8-apache composer create-project laravel/laravel

Referências

Ambiente PHP 8 com Apache no Docker

Feito!

sábado, 16 de janeiro de 2021

Reconhecendo caracteres em imagens com Tesseract

O que é Tesseract?

É um software de reconhecimento ótico de caracteres de código aberto com Licença Apache 2.0, originalmente desenvolvido pela Hewlett-Packard e foi por um tempo mantido pelo Google. Se aplica a imagens em formato tiff com texto puro em uma única coluna, convertendo a saída em um arquivo txt. Não possui mecanismos para reconhecimento de layout, desta forma não é recomendável para textos que possuam imagens, fórmulas ou mais de uma coluna.

Instalando o tesseract-ocr no Debian, Ubuntu e derivados

$ sudo apt install imagemagick graphicsmagick-libmagick-dev-compat exactimage tesseract-ocr

Convertendo um imagem "teste.jpg" para texto

Na imagem deve ter letras, números ou uma combinação de letras e números para o tesseract fazer a leitura e extrair o resultado.

No diretório onde está a imagem com texto, execute o comando abaixo.

# tesseract teste.jpg -psm 8 output.txt

Integrando o tesseract-ocr em um sistema em PHP

Com o ambiente PHP configurado, pode ser adicionado a lib tesseract-ocr via composer.

Após instalar o tesseract-ocr e realizado os testes de captura de texto de uma imagem pelo terminal, execute no diretório do projeto.

$ composer require thiagoalessio/tesseract_ocr

Uso básico na prática com PHP


<?php
require_once "vendor/autoload.php";

use thiagoalessio\TesseractOCR\TesseractOCR;

   echo (new TesseractOCR('imagens/teste.png'))->run();


Demais exemplos de como utilizar a lib TesseractOCR no PHP, use a referência [2].

Referências


[1] https://github.com/tesseract-ocr/tesseract

[2] https://github.com/thiagoalessio/tesseract-ocr-for-php

Feito!

sábado, 5 de dezembro de 2020

Configurando o ambiente PHP 8 do jeito certo no Windows

PHP 8 do jeito certo no Windows 10

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.

Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 8.0.0.

Extrair, renomear para php-8.0.0 e copiar para C:\

Acessar C:\php-8.0.0 e renomear o arquivo php-development.ini para php.ini

session.save_path = "c:\Windows\Temp"
file_uploads = On
upload_max_filesize = 10M
max_file_uploads = 10M

Extensões

diretório das extensões

extension_dir="ext"

Habilitar as extensões. Por padrão vem comentadas, basta retirar o (ponto-e-vírgula ;) na frente.

extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_pgsql
extension=sockets

Habilitar os erros

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_erros = On

Habilitar o JIT

opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255

Adicionar no PATH do SO

Botão direito em "Meu Computador", Propriedades, Configurações avançadas do sistema, Variáveis de Ambiente, PATH, Novo e coloca o caminho "C:\php-8.0.0". Clique em OK. Feche todas as janelas restantes clicando em OK.

Abre o PowerShell e digite: php --version

PHP 8.0.0 (cli) (built: Nov 25 2020 22:02:58) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

Crie um diretório www no lugar desejado e crie um arquivo info.php

<?php
phpinfo();

No diretório www, execute: php -S 127.0.0.0:8000

No browser, acesse http://localhost:8000

Feito!

terça-feira, 17 de novembro de 2020

Aumentar o tamanho máximo do POST no upload de arquivos

Se já deparou com a mensagem "POST Content-Length of X bytes exceeds the limit of Y".

Mas você diz, que já alterou o upload_max_filesize para outro valor máximo permitido. OK, porém faltou alterar também o valor máximo do POST, no caso é post_max_size.

Então, edite o php.ini

De
post_max_size=40M

Para
post_max_size=256M ou 512M ou 1G

De
upload_max_filesize=40M

Para
upload_max_filesize=256M ou 512M ou 1G

Reinicie o servidor Apache ou Nginx

Segurança de limite requisição, adicionar no arquivo de Vhost o parâmetro LimitRequestBody com o tamanho máximo, colocar o valor em bytes.

Feito!

segunda-feira, 21 de setembro de 2020

Instalando e Configurando o Nginx e PHP 8 beta4 no Ubuntu

O objetivo deste post é descrever os procedimentos de instalação e configuração do Nginx e PHP 8 beta4 que foi lançado em 17 de Setembro de 2020.

Ressaltando que por ser versão beta, não é recomendado utilizar em ambiente de produção, apenas em ambiente local, ok?

Instalação do servidor web Nginx

$ sudo apt install nginx

Instalação das dependências necessárias

$ sudo apt install -y wget gcc pkg-config libxml2-dev sqlite3 libsqlite3-dev zlib1g libz-dev

Download do PHP 8.0 beta4

$ wget -c https://downloads.php.net/~pollita/php-8.0.0beta4.tar.xz -o-

Extração do PHP 8.0 beta4 que foi feito o download

$ tar -Jxxvf php-8.0.0beta4.tar.xz && mv php-8.0.0beta4.tar.xz php-8

Acessar o diretório extraído

$ cd php-8

Habilitaro FPM e PDO MySQL no PHP

$ ./configure --enable-fpm --with-pdo-mysql

Compilação e instalação

$ make && sudo make install

Renomear o arquivo php.ini-development para php.ini

$ sudo cp php.ini-development /usr/local/php/php.ini

$ sudo vim /usr/local/php/php.ini

/cgi.fix

retira o ; na linha correspondente cgi.fix_pathinfo e deixe conforme abaixo

cgi.fix_pathinfo=0

ESC +:x (salvar e sair do editor vim)

$ sudo /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fmp.d/www.conf
$ sudo cp sapi/fpm/php-fpm /usr/local/bin
$ sudo cp sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
$ sudo vim /usr/local/etc/php-fmp.d/www.conf

Alterar o usuário e grupo nas linhas correspondentes a user e group para www-data que é o usuário e grupo do servidor na distro Debian e derivados.
ESC +:x

$ sudo vim /usr/local/etc/php-fpm.conf

Adicionar no final do arquivo

include=/usr/local/etc/php-fpm.d/*.conf

Reload das configurações feitas

$ sudo /usr/local/bin/php-fpm
$ sudo vim /etc/nginx/sites-available/default

Adicionar index.php antes de index.html em index

Ajustar também as configurações feitas anteriormente no PHP FPM

location ~\.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}

ESC + :x (salvar e sair do editor vim)

$ sudo service nginx restart

Como o ambiente PHP 8 beta4 está em ambiente local e para ter permissão de escrita no DocumentRoot default do servidor web Nginx, então pode atribuir permissão ao seu usuário regular no /var/www/html

$ sudo chown -R $USER:USER /var/www/html $ sudo vim /var/www/html/info.php
    <?php 
      phpinfo();
  

Salva o arquivo e acessa no browser http://localhost/info.php

Feito!

sábado, 12 de setembro de 2020

Habilitando o Instant Client Oracle no PHP com CentOS

Ambiente PHP com MariaDB e OCI8 habilitado no CentOS

# yum update
# yum install epel-release -y
# yum install php php-cli php-pdo php-curl php-gd php-xml php-mbstring systemtap-sdt-devel php-pear php-devel mariadb-server make curl

Configuração de segurança do MySQL/MariaDB

# mysql_secure_installation

Logar no usuário administrador do MariaDB

# mysql -u root

Criar o banco de dados, usuário e permissão do usuário no MariaDB

MariaDB [(none)]> CREATE DATABASE ;
MariaDB [(none)]> CREATE USER 'usuario'@'127.0.0.1' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nomedb.* TO user@127.0.0.1;
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

Download do Instant Client Oracle.

Se a versão do Oracle for 10g ou 11g, faça o download da versão 11.2.x do Instant Client Oracle. Nesse post, foi instalado a versão 11.2.0.4.0-1.

Como essa versão não é atual, então precisará criar uma conta no site do Oracle para poder fazer o download pelo link mencionado.

Após de ter feito o download Instant Client Oracle (basic, devel, sqlplus), segue o procedimento para instalação.

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

# dnf install libnsl

Definição de variáveis de ambiente e adicionar no PATH

export LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib/"
export ORACLE="/usr/lib/oracle/11.2/client64/"
export PHP_DTRACE=yes
export PATH=$PATH:$LD_LIBRARY:$ORACLE:$PHP_DTRACE

Download OCI8

Acesse https://pecl.php.net/package/oci8 e faça o download do OCI8 e segue os procedimentos.

$ tar xzvf oci8-2.2.0.tgz
$ cd oci8-2.2.0/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib/
$ make
# make install

Installing shared extensions: /usr/lib64/php/modules/

Criar o arquivo oci8.ini no /etc/php.d

# vim /etc/php.d/oci8.ini

Adicionar a linha abaixo

extension=oci8.so
# systemctl reload httpd

Verificar se o OCI8 foi habilitado no PHP

# php -i | grep oci8
/etc/php.d/oci8.ini
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20

Inicialização dos serviços Apache (httpd), MariaDB (fork do MySQL)

# systemctl stop httpd
# systemctl start httpd
# systemctl enable httpd
# systemctl start mariadb
# systemctl enable mariadb

Liberar a porta 80 no firewall para o acesso no INPUT e FORWARD

# firewall-cmd --add-port=80/tcp --permanent

Teste básico

Testar com a função phpinfo() no info.php se a extensão OCI8 foi habilitada corretamente.

# vim /var/www/html/info.php
    <?php 
       phpinfo();

Confere o screenshot abaixo

Caso não exibir o OCI8 habilitado no phpinfo() e tenha feito a configuração conforme os procedimentos descritos de forma correta, então reinicie no comando
# reboot

Feito!

quarta-feira, 12 de agosto de 2020

Instalando e Configurando a stack LEMP no CentOS

O que é LEMP?

O termo LEMP é a junção do sistema operacional Linux, servidor web Nginx, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# yum update
# yum install epel-release

Instalação dos pacotes LEMP


# yum install nginx mariadb-server mariadb php php-mysql php-pdo php-cli php-curl php-fpm php-mbstring php-xml

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Inicializar os serviços e habilitar no boot do Nginx e MySQL


Nginx

# systemctl start nginx
# systemctl enable nginx

MySQL/MariaDB

# systemctl start mariadb
# systemctl enable mariadb

O CentOS vem com firewall habilitado e precisa liberar a porta 80 para acessar o servidor

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload

Edite o arquivo /etc/php-fpm.d/www.conf, substituir em user e group de apache por nginx, conforme abaixo:

; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Por padrão, php-fpm irá escutar em um host e porta específicos sobre TCP. Queremos alterar essa configuração para que ela ouça um arquivo de socket local, pois isso melhora o desempenho geral do servidor.

Altere a linha que contém a diretiva de escuta no arquivo /etc/php-fpm.d/www.conf para o seguinte:

listen = /var/run/php-fpm/php-fpm.sock;

Por fim, no mesmo arquivo, altere a configuração do dono e grupo no socket definido na diretiva listen. Pesquise as diretivas listen.owner, listen.group e listen.mode. Por padrão essas linhas estão comentadas. Descomente, removendo o ; dessas linhas e altere para nginx, conforme abaixo:

listen.owner = nginx listen.group = nginx listen.mode = 0660

Habilitar o PHP-FPM


# systemctl start php-fpm

Configuração do Nginx para o processo PHP


# vim /etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  server_domain_or_IP;

    root   /var/www/html
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /var/www/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Reinicie o serviço Nginx


# systemctl restart nginx

Criar o arquivo info.php para testar a execução do PHP

# vim /var/www/html/info.php

 <?php 
  phpinfo();

ESC+x (salva e sai do editor Vim)

No browser acesse http://IPSERVIDOR/info.php

Feito!

segunda-feira, 10 de agosto de 2020

Instalando e Configurando a stack LEMP no Debian

O que é LEMP?

O termo LEMP é a junção do sistema operacional Linux, servidor web Nginx, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# apt update

Instalação dos pacotes LEMP


# apt install nginx mariadb-server php php-mysql php-pdo php-cli php-xml php-mbstring php-fpm

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Alterar a ordem dos arquivos que o servidor web Apache entenda primeiro.

# vim /etc/nginx/sites-available/default

Adicione index.php, conforme abaixo:

index index.php index.html index.htm index.nginx-debian.html;

Em seguida, na sessão locations ~.php$, deixe conforme abaixo, substituindo o X pela versão do PHP que foi instalado.

Para verificar a versão do PHP, no terminal digite: php --version

location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.X-fpm.sock;
# With php-cgi (or other tcp sockets):
fastcgi_pass 127.0.0.1:9000;
}

ESC+x (salva e sai do editor Vim)

Modifique o valor para o parâmetro cgi.fix_pathinfo do arquivo /etc/php/php-X/fpm/php.ini

# vim /etc/php/7.X/fpm/php.ini
cfgi.fix_pathinfo=0

ESC+x (salva e sai do editor Vim)

Reload no Nginx e PHP FPM

# systemctl reload nginx # systemct reload php7.X-fpm

Criar o arquivo info.php para testar a execução do PHP

O diretório padrão do DocumentRoot no Apache é /var/www/html

# vim /var/www/html/info.php < ?php
phpinfo();

ESC+x (salva e sai do editor Vim)

Permissão para o usuário e grupo no /var/www/html no Debian é www-data:www-data

# chown www-data:www-data -R /var/www/html

No browser acesse http://IPSERVIDOR/info.php

Feito!

domingo, 9 de agosto de 2020

Instalando e Configurando a stack LAMP no Debian

O que é LAMP?

O termo LAMP é a junção do sistema operacional Linux, servidor web Apache, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# apt update

Instalação dos pacotes LAMP


# apt install apache2 mariadb-server php libapapache2-mod-php php-mysql php-pdo php-cli

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Alterar a ordem dos arquivos que o servidor web Apache entenda primeiro

# vim /etc/apache2/mods-enabled/dir.conf

Padrão

< IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm < /IfModule>

Coloque o index.php no primeiro, conforme abaixo:

< IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm < /IfModule>

ESC+x (salva e sai do editor Vim)

Reload no Apache


# systemctl restart apache2

Criar o arquivo info.php para testar a execução do PHP

O diretório padrão do DocumentRoot no Apache é /var/www/html

# vim /var/www/html/info.php

< ?php
phpinfo();

ESC+x (salva e sai do editor Vim)

Permissão para o usuário e grupo no /var/www/html no Debian é www-data:www-data

# chown www-data:www-data -R /var/www/html

No browser acesse http://IPSERVIDOR/info.php

Feito!

sábado, 9 de maio de 2020

Instalando o Composer no Windows e Linux

O que é Composer?
Composer é um gerenciador de dependências do PHP que facilita instalar bibliotecas e frameworks de terceiros ou mesmo suas que deseja ou precisa utilizar em seu projeto. Assim o composer encarraga-se de buscar, fazer o download e criar um autoloader deixando-as prontas para uso.

Instalação do Composer

Windows

Faça o download e execute o Composer-Setup.exe . Esse instalador do Composer já adiciona no PATH do sistema. Fecha o CMD ou PowerShell se tiver aberto e abre novamente, digita composer -V

Linux (qualquer distro)

Pré requisitos:

$ curl -s https://getcomposer.org/installer | php

$ sudo mv composer.phar /usr/local/bin/composer

Feito!

sexta-feira, 8 de maio de 2020

Configurando o ambiente PHP no Windows do jeito certo

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.
Qual é o objetivo?
Fazer o download do PHP diretamente do site https://php.net e configurar manualmente no Windows e mostrar o uso do servidor embutido para executar scripts, aplicações em PHP.

Procedimentos
  1. Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 7.4.5
  2. Escolha a plataforma do PHP em relação ao seu computador, x86 ou x64.
    Detalhe importante é escolher entre as versões Thread Safe (TS) ou Non Thread Safe (NTS). Isso significa questões internas do PHP, mas para desenvolvimento escolha Non Thread Safe (NTS)
  3. Após o download, descompacte o arquivo .zip na partição C:\ e renomeie o diretório para php
  4. Faça a instalação do Microsoft Visual C++ , o PHP precisa para ser executado na máquina.
  5. Adicionar no PATH do Windows 10 o diretório C:\php que foi descompactado no item 1
    1. Clique no botão direito no "Computador" / "Computer" e escolha "Propriedades" / "Properties";
    2. Escolha "Configurações Avançadas de Sistema" / "Advanced System Settings";
    3. Clique em "Variáveis de Ambiente" / "Environment variables";
    4. Selecione PATH e clique em editar ou novo
    5. Adicione valor da variável de ambiente PATH, colocar o diretório C:\php. Fecha todas as janelas restantes, clicando em OK;
    6. Reabra o CMD ou Powershell e digite php --version
  6. No diretório C:\php tem dois arquivos de configurações: php.ini-development e php.ini-production. Renomei o arquivo php.ini-development para php.ini. É nesse arquivo que apresenta as configurações para executar o PHP e habilitar extensões necessárias durante o desenvolvimento da aplicação.
  7. Ajustes no arquivo php.ini

    Procurar a linha extension_dir e descomentar (retirar o ;).

    O extension_dir é onde indica as extensões do PHP, que por padrão é o diretório ext no Windows.

    Habilitar as extensões necessárias que desejar, descomentando as linhas correspondentes, em extension=

  8. Abra o Bloco de Notas com botão direito do mouse e clique em Executar como Administrador. C:\Windows\System32\drivers\etc, selecione Todos os arquivos para exibir o arquivo hosts. Verifique se existe a linha 127.0.0.1 localhost, se existir está pronto, senão acresente-a ao final do arquivo, salve e feche o Bloco de Notas.
  9. Escolha o diretório onde irá manter os projetos PHP. Nesse exemplo, foi escolhido o diretório C:\Users\Reginaldo\projeto
  10. Criei o arquivo info.php no diretório escolhido

    
    <?php 
    phpinfo();
  11. Execute no diretório escolhido no item anterior
  12. php -S localhost:8000

  13. No browser acesse http://localhost:8000

Agora só instalar o SGBD MySQL ou PostgreSQL e o cliente DBeaver que suporta diversos SGBDs (MySQL, PostgreSQL, Oracle, MSSQL).

Referências

https://www.php.net/manual/pt_BR/features.commandline.webserver.php

Feito!

domingo, 27 de outubro de 2019

Instalando e Configurando ambiente PHP no Fedora

Na postagem Integração do Oracle Client no PHP com Debian/Ubuntu , foi explicado os procedimentos no Debian/Ubuntu. Então, o objeto deste howto é explicar os procedimentos de instalação e configuração do ambiente PHP com as extensões dos SGBDs MySQL, PostgreSQL, OCI8 e módulos PHP usuais na distribuição Fedora 30. A maioria dos procedimentos são os mesmos, mas no Fedora tem algumas particularidades.

Observação: O Fedora 30 já inclui no repositório o PHP 7.3.

1. Instalação dos pacotes Apache, PHP e extensões ao SGBD MySQL, PostgreSQL e posteriormente do OCI8

# dnf install -y httpd php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-curl php-soap php-pgsql

2. Download do pacote Oracle Client
Pacotes oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm, oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm , oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

PS: Até a data de publicação deste howto a versão corrente do Oracle Cient é 19.3, então no geral basta substituir a versão que for a mais recente.

3. Instalação dos pacotes do download
# dnf install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
# dnf install oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm
# dnf install oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm


4. Criar o arquivo oracle.conf no diretório /etc/ld.so.conf.d/ e dentro do arquivo adicionar
/usr/lib/oracle/19.3/client64/lib
$ sudo vim /etc/ld.so.conf.d/oracle.conf

5. Atualizar as bibliotecas compartilhadas do sistema $ sudo ldconfig

6. Exportar a variável ORACLE_HOME

$ export ORACLE_HOME=/usr/lib/oracle/19.3/client64/

7. Download do código fonte do oci8 e extrair os arquivos e fazer a compilação.

# pecl download OCI8
# tar zxvf oci8-2.2.0.tgz
# cd oci8-2.2.0/
# phpize
# ./configure --with-oci8=instantclient,/usr/lib/oracle/19.3/client64/lib
# make install


8. Habilitar o oci8.ini no diretório de módulos do PHP
# vim /etc/php.d/oci8.ini
extension=oci8.so
extension=pdo_oci.so
9. Habilitar o PHP no Apache
Adicione o .php no arquivo /etc/httpd/conf/httpd.conf
< IfModule mime_module >
   AddType text/html .php .phps
< /IfModule >
10. Habilitar, iniciar e verificar o status do Apache
# systemctl enable httpd
# systemctl start httpd
# systemctl status httpd


11. Testar com a função phpinfo() no info.php se a extensão Oracle foi habilitada
$ sudo vim /var/www/html/info.php
< ?php
phpinfo();


Confere os screenshots abaixo:





Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

12. Testar conexão com banco de dados Oracle no PHP
Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php
< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!