Não é possível fazer com que o Apache encontre o driver PDO

Não é possível fazer com que o Apache encontre o driver PDO

Estou usando o Windows 10 e instalei o Apache2.4, PHP7.2 e MySQL. Estou tendo problemas para instalar o driver para pdo_mysql

Editei meu arquivo php.ini e na seção de extensões tenho:

extension=pdo_mysql

Também configurei a diretiva extension_dir para:

"C:\php72\ext"

No console de comando eu digito "php -m" e posso ver PDO e pdo_mysql listados.

captura de tela do console de comando mostrando php -m

Reiniciei o Apache, mas quando executo um arquivo .php incluindo print_r(PDO::getAvailableDrivers());ou phpinfo(); vejo que não tenho nenhum driver instalado para o PDO.

No meu arquivo httpd.conf eu tenho

PHPIniDir “C:\php72\”

Eu tentei mudar isso para usar barras invertidas e incluir e remover a barra final, reiniciando o Apache após cada alteração. Ainda não consigo carregar o driver pdo_mysql.

Parece-me que o problema é do Apache e não do PHP (como o módulo pdo_mysql aparece quando executo php -m no console de comando), mas não entendo o que fiz de errado. Procurei outras pessoas com o mesmo problema mas a solução sempre pareceu ser o PHPIniDir, que acho que configurei corretamente.

A máquina que estou usando já estava executando o IIS, então tenho o Apache ouvindo a porta 8090, em vez do padrão. Não tenho certeza se isso é relevante ou não.

Qualquer ajuda seria apreciada!

Responder1

Desinstalei o serviço Apache, apaguei C:\Apache24 e instalei do zero, segui os passos para instalar o pdo_mysql como antes que funcionou.

Responder2

Eu tive esse mesmo problema, onde os módulos eram carregados ao executar via cli, mas não ao executar a mesma configuração do php via Apache.

No meu caso a solução foi definir o extension_dirarquivo php.ini para o caminho absoluto da pasta de módulos (C:\php80\ext no meu caso).

Agora tanto o cli quanto o Apache estão carregando os módulos corretamente.

Responder3

Para mim, as instruções estúpidas que eu estava seguindo para configurar o Fast CGI com Apache me fizeram colocar o arquivo exe onde o arquivo ini deveria ir.

# Where is your php.ini file?
FcgidInitialEnv PHPRC "c:/Program Files/php/php.exe" // should be ini

Eu mudei para o ini e funcionou. Estou surpreso que o php me deixe definir o php.exe como o arquivo ini ...

informação relacionada