5
respostas

Erro ao iniciar o servidor, não encontra o driver PDO.

Tentei iniciar o servidor, mas recebi esse erro.

 C:\Users\pedro\Desktop\GerenciadorDeCursos>php -S localhost:8080 -t public
[Tue Jun 15 10:29:51 2021] PHP 7.4.20 Development Server (http://localhost:8080) started
[Tue Jun 15 10:30:02 2021] [::1]:60955 Accepted
[Tue Jun 15 10:30:02 2021] PHP Fatal error:  Uncaught PDOException: could not find driver in C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:39
Stack trace:
#0 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php(39): PDO->__construct()
#1 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOSqlite\Driver.php(43): Doctrine\DBAL\Driver\PDOConnection->__construct()
#2 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(400): Doctrine\DBAL\Driver\PDOSqlite\Driver->connect()
#3 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(1940): Doctrine\DBAL\Connection->connect()
#4 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(1278): Doctrine\DBAL\Connection->getWrappedConnection()
#5 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\Ent in C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\AbstractSQLiteDriver.php on line 86
[Tue Jun 15 10:30:02 2021] [::1]:60955 [500]: GET /listar-cursos.php - Uncaught PDOException: could not find driver in C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:39
Stack trace:
#0 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php(39): PDO->__construct()
#1 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOSqlite\Driver.php(43): Doctrine\DBAL\Driver\PDOConnection->__construct()
#2 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(400): Doctrine\DBAL\Driver\PDOSqlite\Driver->connect()
#3 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(1940): Doctrine\DBAL\Connection->connect()
#4 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php(1278): Doctrine\DBAL\Connection->getWrappedConnection()
#5 C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\Ent in C:\Users\pedro\Desktop\GerenciadorDeCursos\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\AbstractSQLiteDriver.php on line 86
[Tue Jun 15 10:30:02 2021] [::1]:60955 Closing`

Rodei php -m, esses são os drivers listados.

[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]
5 respostas

Olá Pedro,

Tente dar uma conferida no arquivo php.ini na linha ;extension=pdo_sqlite. Ela precisa estar descomentata, ou seja, sem o ponto-e-vírgula no início da linha.

Olá Fernando,

Ela está descomentada, foi uma das configurações que fiz inicialmente.

Pedro,

Não sei se vai resolver, mas talvez tenta ativar tbm a linha extension=php_pdo.dll e a linha com php_sqlite3.dll no arquivo php.ini.

Seguem uns links sobre como habilitar o driver no windows:

https://www.php.net/manual/pt_BR/sqlite3.installation.php

https://www.php.net/manual/pt_BR/pdo.installation.php

Por algum motivo essas linhas não existem no meu .ini, eu devo adicionar mesmo assim?

Creio que não tem problema não. As linhas sem os comentários ficam assim:

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite3.dll

Outra coisa que vc pode fazer, é verificar se a extensão (No caso do windows, o arquivo php_pdo_sqlite.dll) existe no teu ambiente. Normalmente, ela já está instalada junto com a versão do php que você está usando, mas não custa verificar.

Só lembrando que o servidor (php -S) precisa ser reiniciado para pegar a nova configuração.