sábado, 31 de janeiro de 2015

Corrigindo o erro "old_password" no MySQL

Olá galera,

Recentemente precisei migrar um sistema feito com Laravel 3.2 para um servidor com PHP 5.5.9. Antes de realizar a migração, para quem não sabe, é necessário fazer uns ajustes e podem ser conferidos no link http://www.codegeo.com.br/2014/05/corrigindo-conflito-do-yield-do-laravel.html.

Com as correções feitas, surgiu o seguinte erro: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password].

O problema é causado devido ao novo formato para senha do banco que é de 41 bytes ao invés do formato antigo que é de 16.

Execute os comandos abaixo no banco que deseja alterar a senha. Esse procedimento pode ser feito diretamente no MySQL(terminal), MySQL Workbench, PHPMyAdmin ou qualquer outro da sua preferência.

    SET SESSION old_passwords=0;
    SET PASSWORD = PASSWORD('senha_do_seu_banco');
  

Na linha 1, desativamos o old_passwords para a sua session.

Na linha 2, alteramos a senha.

OBS: Os comandos devem ser executados juntos caso contrário não vai funcionar.

Espero que a dica seja útil para quem se deparou com o mesmo problema.

Um grande abraço e até a próxima.

terça-feira, 13 de janeiro de 2015

Instalar o módulo OCI8 (Oracle) no Ubuntu 14.04

1 - Instalar PHP5 e Apache 2

http://www.codegeo.com.br/2013/01/instalando-apache-2-e-php-5-no-ubuntu.html

2 - Baixar o Oracle Instant Client

Para que o módulo php-oci8 funcione, é necessário baixar o Instant Client.

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

Baixe os arquivos Instant Client Package - Basic e Instant Client Package - SDK

OBS: Faça o download dos arquivos ZIP de acordo com a versão do seu banco de dados.

3 - Preparar Instant Client

Extraia o basic e o sdk para uma pasta instantclient dentro de /opt

unzip instantclient-basic-linux.x64-XX.X.X.X.X.zip -d /opt
unzip instantclient-sdk-linux.x64-XX.X.X.X.X.zip -d /opt

Os comandos acima irão extrair os 2 arquivos ZIP e colocá-los dentro de uma pasta chamada instantclient_XX_X, sendo que o X indica a versão baixada.

Agora vamos criar alguns links simbólicos dentro da pasta.

cd /opt/instantclient_XX_X
ln -s libclntsh.so.XX.X libclntsh.so
ln -s libocci.so.XX.X libocci.so

4 - Instalar bibliotecas necessárias

sudo apt-get install libaio1 php-pear php5-dev

5 - Preparar PECL/PEAR

pear upgrade --force pear
pear upgrade
pear channel-update pear.php.net
pecl channel-update pecl.php.net

6 - Instalar PECL/PEAR

pecl install oci8

Durante a instalação, o PECL irá pedir para você localizar o Instant Client e será exibida uma mensagem como abaixo:
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

Digite o código abaixo e em seguida pressione Enter

instantclient,/opt/instantclient_XX_X

7 - Incluir o OCI8 ao php.ini

sudo nano /etc/php5/apache2/php.ini

No final do arquivo acrescente a linha abaixo:

extension=oci8.so

Para salvar as alterações, aperte CTRL+X, digite Y e em seguida pressione Enter

8 - Reiniciar o Apache

sudo service apache2 restart

Verifique no phpinfo() se o módulo esta ativo. Caso a instalação tenha sido feita corretamente, irá aparecer uma imagem como a abaixo.

OBS: Não apague a pasta /opt/instantclient_XX_X pois o OCI8 deixará de funcionar.