Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Fatal error: Uncaught PDOException: could not find driver

Tags:

php

mysql

pdo

I have been trying to connect to MySQL from PHP using PDO. However, I get this error message:

PHP Fatal error: Uncaught PDOException: could not find driver in /home/abdullah/Documents/projects/cs50_radio/public/test.php:5 Stack trace: #0 /home/abdullah/Documents/projects/cs50_radio/public/test.php(5): PDO->__construct('mysql:host=127....')

PDO is enabled and installed. I checked phpinfo(), but I can't figure out the error.

Here is my code used to connect:

<?php
    $user = "root";
    $pass = "root";

    $dbh = new PDO("mysql:host=127.0.0.1;dbname=radio;port=3306", $user, $pass);
    //$dbh->query('INSERT INTO users (name) VALUES ("abdullah")');
    $dbh = null;
?>

Should my project folder contain any additional drivers or files? Or am I missing something in my code?

like image 457
A.Emad Avatar asked Nov 27 '16 09:11

A.Emad


3 Answers

In my PHP 7.4 I didn't get php.ini. Instead, I have php.ini-development and php.ini-production. So, I have created a new php.ini file only and copied the configurations into it.

Then I have uncommented and changed the extension directory to the full installation path.

 extension_dir = "C:/php/ext"

And uncommented:

 extension=pdo_mysql

Finally, restart the server.

like image 163
Abdu Avatar answered Oct 22 '22 12:10

Abdu


To use different drivers you need to install them.

On Windows you simply uncomment a line in php.ini:

extension=php_pdo_mysql.dll

On Debian or similar Linux distribution you can just install the extension with the package manager:

sudo apt update
sudo apt install php7.1-mysql

Remember to install the correct version.

like image 37
VeeeneX Avatar answered Oct 22 '22 13:10

VeeeneX


I had the same problem, resulting from some incompatibility (not immediately evident) between the Apache and PHP versions I had downloaded. Try writing a toy PHP script that simply creates a new PDO object, - something like:

<?php

$dbname   = 'mydb';
$username = 'myuser';
$password = 'mypassword';
try {
    $pdo = new \PDO("mysql:host=localhost;dbname=$dbname", $username,  $password);
} catch (Exception $e) {
    print $e->getMessage() . "\n";
}
print "OK\n";

Then run that script from the command line. If you don't get the 'could not find driver' error message, then that points to an incompatibility between your PHP and Apache versions.

like image 6
flapjack Avatar answered Oct 22 '22 11:10

flapjack