Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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.