Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

PHP Fatal error: Uncaught PDOException: could not find driver

Ao tentar realizar a primeira conexão com o banco de dados sqlite deu o seguinte erro: PHP Fatal error: Uncaught PDOException: could not find driver in /home/leandro/pratica/php/php-pdo/conexao.php:3 Stack trace:

#0 /home/leandro/pratica/php/php-pdo/conexao.php(3): PDO->__construct()

#1 {main} thrown in /home/leandro/pratica/php/php-pdo/conexao.php on line 3

Estou utilizando ubuntu para o projeto

10 respostas

Boa tarde,

Qual driver está tentando conectar? Verifica o driver que está usando está sem o ";" na frente, no arquivo php.ini

Então eu desmarquei essa opção no ubuntu mas ta me aparecendo isso agora:

PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20190902/pdo_mysql (/usr/lib/php/20190902/pdo_mysql: cannot open shared object file: No such file or directory) , /usr/lib/php/20190902/pdo_mysql.so (/usr/lib/php/20190902/pdo_mysql.so: undefined symbol: mysqlnd_allocator)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20190902/pdo_sqlite (/usr/lib/php/20190902/pdo_sqlite: cannot open shared object file: No such file or directo ry), /usr/lib/php/20190902/pdo_sqlite.so (/usr/lib/php/20190902/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0 PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )

Dei uma olhada no local e estão lá, com a extensão.so, tem alguma ideia do que poderia ser?

Leandro, no curso nós utilizamos o SQLite e pela sua mensagem de erro, você está tentando habilitar a extensão do MySQL que não está instalada.

Desfaz a alteração no seu php.ini e instala a extensão do SQLite. Normalmente isso resolve, dependendo de como você instalou o PHP:

sudo apt install php-sqlite

Depois, roda php -m e vê se pdo_sqlite aparece na lista. Se sim, o driver está instalado. :-D

Copiei o código e me apareceu: Package php-sqlite is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

Eu havia instalado o sqlite-3 numa tentativa anterior, deve ser isso?

Qual a saída do comando apt-cache search php-sqlite?

php-sqlite3 - SQLite3 module for PHP [default] php7.4-sqlite3 - SQLite3 module for PHP

Tá aí o pacote. Só instalar ele. :-D

sudo apt install php-sqlite3.

PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20190902/pdo_sqlite (/usr/lib/php/20190902/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_sqlite.so (/usr/lib/php/20190902/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0

Faltou fazer essa parte da minha primeira resposta:

Desfaz a alteração no seu php.ini...

solução!

Obrigado kk, achei q era só pra desmarcar o do mysql