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

PHP Fatal error: Uncaught PDOException:

Quando eu faço

php .\conexao.php

Dá esse erro:

PHP Fatal error:  Uncaught PDOException: could not find driver in C:\Users\PC\Documents\PDO\conexao.php:3
Stack trace:
#0 C:\Users\PC\Documents\PDO\conexao.php(3): PDO->__construct()
#1 {main}
  thrown in C:\Users\PC\Documents\PDO\conexao.php on line 3
39 respostas

Olá, Valdemir. Você não habilitou o driver como expliquei aqui:

https://cursos.alura.com.br/course/php-pdo-banco-de-dados/task/72922

Está habilitado sim

;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop

Valdemir, quando você digita php -m, o driver do banco em questão aparece na lista?

C:\Users\PC>php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
filter
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

Então, Valdemir. Aparentemente você editou o php.ini errado. Qual a saída do comando php --ini ?

C:\Users\PC>php --ini
Configuration File (php.ini) Path:
Loaded Configuration File:         C:\php8\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Como tá a diretiva extension_dir do php.ini, Valdemir?

[sqlite3]
; Directory pointing to SQLite3 extensions
; http://php.net/sqlite3.extension-dir
;sqlite3.extension_dir =

Não do sqlite, Valdemir. Do PHP mesmo.

Deve ter algo como ;extension_dir=ext. Se tiver, descomenta essa linha tbm.

Não existe essa extension aqui

Acabei de baixar o PHP 8 pra Windows aqui e tá lá na linha 768 do php.ini-development:

;extension_dir = "ext"

Abri no Notepad++ e encontrei ;extension_dir = "ext" porém habilitei ele e continua a mesma coisa.

Seu php -m continua não mostrando o pdo_sqlite?

Não mostra

Na pasta C:\php8\ext tem o arquivo php_pdo_sqlite.dll?

Já instalei o php7, depois voltei pro 8, tentei um milhão de coisas na internet pra ver se resolvia o problema mas sem sucesso algum. Impedido de proseguir com Laravel com esse erro.

Na pasta C:\php8\ext tem o arquivo php_pdo_sqlite.dll?

Tem sim

Um chute aqui, Valdemir. Toca colocar o caminho absoluto no extension_dir:

extension_dir = "C:\php8\ext"

Aí vê se as extensões aparecem na saída do php -m

Eu não tenho Windows aqui, Valdemir. O que tem nesse rar?

O arquivo compactado do php8 que está no meu PC.

Você acha que se eu instala o linux aqui evita esse tipo de problema?

Valdemir, manda como zip que eu consigo abrir aqui.

Eu acho bem mais fácil lidar com Linux sim, mas é questão de hábito.

Valdemir, a extensão pdo_sqlite tá comentada no seu arquivo php.ini.

rsrs

Você descomentou a extensão no arquivo de exemplo (php.ini-development)

rsrs

Por isso o erro.

Ai aparece comentada?

https://i.imgur.com/Kg5ulQz.png

Aqui está descomentada.

Olha qual arquivo você tá editando, Valdemir

O arquivo php.ini-development é um arquivo de exemplo que serve apenas como modelo pra gerar o php.ini. O arquivo realmente lido pelo PHP é o php.ini. Entendeu?

https://i.imgur.com/sOkpsBn.png

Pode me manda o arquivo compactado já editado?

Valdemir, olha a extensão do arquivo aberto no notepad++. Seu Windows não exibe as extensões dos arquivos, entendeu?

O arquivo logo acima desse é o correto. Só editar ele.

Você renomeou o arquivo php.ini-development pra php.ini.ini-development`

rsrsrs

Não esquece de marcar o tópico como solucionado, Valdemir.

Estou tentando resolver aqui, o problema ainda pesistir. Vou baixar o php8 novamente e reinstalar.

Valdemir, é só editar o arquivo certo. Não precisa baixar de novo. Você só estava editando o arquivo errado

 [Composer\Exception\NoSslException]
  The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extensio   
  n, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.

O que seria esse erro quando dou composer install?

Habilita a extensão openssl

Mesmo erro

solução!

Depois de muita laputa aqui parece que agora funcinou.