OCI Yii 2

Galera estou tentando fazer um teste com o oracle, porém da erro na conexão. Erro, "could not find driver".


return [

    'username' => 'esq',

    'dsn' => 'oci:dbname=//my_ip/meu_schema;',

    'class' => 'yii\db\Connection',

    'password' => 'esq',

    'charset' => 'utf8',

];

o que há de errado?

Verifica no phpinfo() se esta aparecendo o pdo oci

Retificando…

Minhas apps em CI já usam Oracle e o OCI8 está habilitado. Porem na propriedade de PDO ele não está ativo.

Dei um olhada no php.ini mas não achei onde habilitar o PDO.

Alguma dica de como habilitar esse OCI PDO, ja fiz algumas pesquisas e só acho exemplos com .dll, nada de como habilitar essa extensão e nem onde baixar o .so pra ela.

Tentei tb aplicar a variável do tnsnames.ora e nada.

Cara, deveria estar no php.ini. Pesquisa por ;extension e procura por ;extension=php_pdo_oci.dll. A principio basta tirar o ponto e virgula. Caso já tenha feito isso e esse não seja o problema, avisa para tentarmos outra coisa.

Alan, eu uso Linux, por isso comentei do aquivo .so. Porém como mencionado tentei adicionar o extension=php_pdo_oci.so no php.ini e no deu resultado. Tentei baixar pelos repositórios do Fedora 19 e ele também não existe.

Uma coisa curiosa, que não mencionei é. Uso Oracle com o CI mas somente usando a extensão OCI.

Ressuscitando…

Existe alguma extensão do Yii que possa ser usada ao invés de precisar da lib php_pdo_oci.so que é experimental? Sei que o Laravel tem uma extensão que faz isso.

Eu também tive esse dúvida sobre o PDO_OCI, já que a versão disponível no repositório PECL foi descontinuada.

A única opção é realmente o PDO_OCI Experimental que vêm junto do PHP, compilando ela.

Finalmente consegui resolver o problema do PDO_OCI, com ajuda do @Railton.

Primeiro, dei um F-se pro fedora, não gosto e nem me dou bem com RPM, Não sei pq. Instalei o Ubuntu 14.04 usando o vagrant.

Se não tem o Oracle client no seu PC ou Vagrant siga essas dicas:

https://help.ubuntu.com/community/Oracle%20Instant%20Client

Se já tiver o Oracle instalado e configurado comece por aqui.

Rode o comando sudo apt-get build-dep php5, esse comando é preciso para resolver todas as dependências.

Baixe e descompacte no diretório /usr/src o pacote do PHP, tem que ser o mesmo que está instalado.

(no meu caso foi a 5.5.9) http://br2.php.net/get/php-5.5.9.tar.bz2/from/a/mirror

para descompactar execute o comando: sudo tar -jxvf php-5.5.9.tar.bz2

Acesse o diretório em que foi descompactado o pacote do PHP, no meu caso o diretório foi php-5.5.9 e rode o comando sudo ./configure --with-pdo-oci=shared,instantclient,/usr,11.2 (mude o 11.2 caso se Oracle seja de outra versão)

Se não exibiu nenhum erro rode o comando sudo make

Após o make localize o arquivo pdo_oci.so com o comando find . -name pdo_oci.so.

Rode o comando ls /usr/lib/php5/ e localize a pasta que tem o formato de data (no meu caso foi 20121212), então copie o pdo_oci.so para ela com o comando sudo cp /usr/src/php-5.9.9/moludes/pdo_oci.so /usr/lib/php5/20121212

Edite o arquivo php.ini - sudo vim /etc/php5/apache2/php.ini , no final do arquivo adicione a linha extension=pdo_oci.so, salve e feche o arquivo.

reinicie o Apache sudo service apache2 restart