Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
INSTALAÇÃO
Linux + PHP + Oracle
Como instalar suporte à Oracle no PHP em Linux
Embora proprietário o banco de dados Oracle é robusto e muito popular entre as soluções desenvolvidas atualmente. Neste tutorial nós vamos instalar `PHP` com suporte a bancos de dados Oracle em um servidor Linux. ## Pré-requisitos Para concluir este tutorial, você precisará ter um servidor Ubuntu 18.04 e um ambiente com o banco de dados Oracle. Não faz parte deste tutorial ensinar como instalar o banco de dados. ## Instalação Com os pré-requisitos atendidos podemos começar a instalar os pacotes necessários, começaremos instalando o ambiente WEB e depois o suporte ao banco de dados oracle. Os comandos abaixo irão utilizar o Apache como servidor web: ```bash #Atualizar os repositórios sudo apt-get update # Instalar apache e dependências # Durante a instalação dos pacotes do apache é possível que você seja questionado sobre uma configuração de # e-mails, selecione a opção `No configuration` sudo apt-get --yes install build-essential autoconf flex bison \ apache2 apache2-dev libapache2-mod-evasive apache2-utils \ libjpeg8 libjpeg8-dev libpng16-16 libpng-dev \ zlibc zlib1g zlib1g-dev libxml2 libxml2-dev \ libmcrypt-dev libmcrypt4 mcrypt openssl libssl-dev \ libssl1.1 libgd-dev \ libgdchart-gd2-xpm libgdchart-gd2-xpm-dev \ vim curl libcurl4 libcurl4-openssl-dev \ libfreetype6-dev libreadline7 libreadline-dev \ rpl zip libzip-dev libbz2-dev unzip libaio1 libldap2-dev \ unixodbc unixodbc-bin bash unixodbc-dev s3cmd #Instalar instalar o PHP sudo apt-get install php libapache2-mod-php ``` ### Verificar a instalação **Apache** Ao terminar de instalar os pacotes necessários, podemos verificar se a instalação foi concluída com sucesso, para verificar se o apache está instalado corretamente acesse o servidor pelo navegador: ```bash # No meu caso eu usei o acesso pela rede http://192.168.10.13 ``` O resultado esperado é a conhecida `Apache2 Ubuntu Default Page `. **PHP** Para verificar se o PHP está instalado digite em um terminal do servidor: ```bash php -v ``` O comando acima irá exibir a versão atual do `PHP` no servidor. ### Configurar o Apache Com os pacotes devidamente instalados, ainda devemos realizar algumas configurações adicionais, execute os comandos abaixo com usuário root: ```bash # Habilitar htaccess e links simbolicos rpl -e "
\n\tOptions Indexes FollowSymLinks\n\tAllowOverride None" \ "
\n\tOptions FollowSymLinks\n\tAllowOverride All" \ /etc/apache2/apache2.conf echo "LimitRequestLine 100000" >> /etc/apache2/apache2.conf #Habilitar módulos a2dismod mpm_event a2dismod mpm_worker a2enmod mpm_prefork a2enmod rewrite service apache2 restart ``` --- ## Instalação do suporte ao oracle Até o momento temos uma versão padrão do `PHP`, no entanto ela não tem suporte a bancos de dados oracle, para cada tipo de banco é necessário instalar um driver específico. Acontece que nenhum repositório mantém um pacote atualizado que de suporte a oracle. Por esse motivo será necessário baixar pacotes do site da oracle e compilar o `PHP`. Como já temos o `PHP` instalado e não queremos que o pacote padrão do nosso servidor seja compilado, pois isso dificultaria a instalação de futuros pacatos. Se esse fosse o caso, toda vez que desejássemos adicionar um pacote todo o `PHP` deveria ser compilado. Para solucionar esse problema iremos baixar os fontes do `PHP` que sejam da exata versão instalada em nosso servidor. Em cima desses fontes baixados iremos compilar o suporte ao oracle, uma vez concluído esse processo copiaremos os fontes compilados para a instalação padrão do servidor. Esse é um processo com um nível de complexidade maior, portanto aqui vai um resumo 1. Instalar apache 2 dependências → OK 2. Instalar PHP → OK 3. Baixar os fontes do PHP → **Atual** 4. Baixar pacotes oracle 5. Compilar o PHP 6. Copiar o módulo oracle para a instalação padrão do PHP 7. Subir o serviço que da suporte ao oracle ### Códigos-fonte PHP Como o objetivo desse tutorial é instalar suporte ao oracle sem compilar a instalação padrão do `PHP` precisaremos de outros fontes, com os quais iremos compilar o suporte ao oracle. Portanto, o primeiro passo é baixar os códigos-fonte do `PHP`. > **Atenção:** você deve baixar fontes com a mesma versão do `PHP` instalado no servidor. Comando para verificar a versão do `PHP` no servidor: ``` php -v ``` A minha versão é: `7.2.17`, portanto é essa que irei baixar. Para fazer o download de uma versão específica do PHP você pode acessar esse link: [https://www.php.net/releases/](https://www.php.net/releases/). Na página de releases do `PHP` já se obtém o link de download, por esse motivo irei baixar diretamente esse arquivo no meu servidor linux. ```bash # Acessar o diretório de fontes do linux cd /usr/local/src # Baixar os códigos-fonte do php wget https://www.php.net/distributions/php-7.2.17.tar.bz2 ``` **Descompactar o PHP** ```bash sudo tar -xjvf php-7.2.16.tar.bz2 ``` ### Instantclient oracle Para compilar o `PHP` precisaremos do instant client oracle, que pode ser baixado do site: https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html. Clique em `Instant Client for` e a sua distribuição de servidor, no meu caso é: ``` Instant Client for Linux x86-64 ``` Para realizar estes download você precisa aceitar contrato de licença e estar conectado a uma conta oracle, caso você não possua uma é possível criar uma no momento do download do software. O primeiro pacote é o `instantclient-basic-linux`, a última versão disponível em maio/2019 é a 19.03 e tendo um servidor x64 o pacote a ser baixado é: ``` instantclient-basic-linux.x64-19.3.0.0.0dbru.zip ``` O segundo pacote a ser baixado é o `instantclient-basic-linux`, a última versão disponível desse pacote também é a 19.03, portanto o arquivo desejado é: ``` instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip ``` Depois de baixar os dois arquivos você deve copiá-los para o servidor, uma solução para isso é usar o `scp`. Para continuar o tutorial você deve estar conectado no servidor linux e com os pacotes do instant client. --- **Descompactar instantclient** Para manter a organização do seu servidor crie a seguinte pasta: ```bash sudo mkdir /usr/local/php7 ``` Mova os arquivos `instantclient` para dentro dela: ```bash sudo mv instantclient-* /usr/local/php7/ sudo cd /usr/local/php7/ ``` Descompacte os arquivos: ``` sudo unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip sudo unzip instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip ``` --- ### Compilar o PHP Com todos as dependências em seus devidos lugares podemos compilar os fontes do `PHP`. ```bash # Acesar o diretório dos fontes cd /usr/local/src/ # Acesasr a pasta descompactada # php-7.2.17/ no meu caso cd php-7.2.17/ ``` Abaixo está o comando usado para compilar o `PHP`, você deve observar o caminho do prefix e da localização do instant client. `prefix` → Usar o mesmo diretório onde armazenamos o instant client. `instant client` → Embora o nome da pasta seja 19_3, internamente o link simbólico aponta para **19.1** por isso usaremos esse valor. Execute como root: ``` ./configure \ --prefix=/usr/local/php7 \ --with-oci8=shared,instantclient,/usr/local/php7/instantclient_19_3 \ --with-pdo-oci=shared,instantclient,/usr/local/php7/instantclient_19_3,19.1 \ make make install ``` Estes comandos terminam a compilação do `PHP`. --- ### Habilitar oracle para a instalação padrão do PHP Como `PHP` compilado para oracle, devemos copiar os módulos `oci8.so` e `pdo_oci.so` para a instalação padrão. Esses módulos estarão localizados dentro da pasta de destino da compilação do `PHP`: ```bash # Pasta onde estão os módulos cd /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/ # Copiar os arquivos cp oci8.so pdo_oci.so /usr/lib/php/20170718/ ``` **Habilitar o driver do oracle no php.ini** Depois de copiar os módulos do oracle para a instalação padrão do `PHP` devemos habilitar o driver do oracle no `php.ini` isso deve ser feito tanto no `cli` quanto no `apache`. Você deve adicionar as seguintes linhas no final dos arquivos: ```bash # Extensões extension=pdo_oci.so extension=oci8.so # Arquivos de destino /etc/php/7.2/cli/php.ini /etc/php/7.2/apache/php.ini ``` Por fim devemos apontar o local do instant client para que essa dependência seja sanada: ```bash # Executar como root echo /usr/local/php7/instantclient_19_3/ > /etc/ld.so.conf.d/oracle-instantclient.conf ldconfig service apache2 restart ``` Para confirmar se está tudo instalado corretamente execute o comano: ```bash php -m ``` Se a rela tiver rolagem vá até o inicio e certifique-se que nenhum erro está sendo exibido, depois procure por `oci98` e `PDO_OCI` entre os módulos habilitados.
COMENTE SOBRE