Cara Mengatasi Could Not Find Driver pada Laravel dan PHP
Apa Itu Could Not Find Driver?
Error biasanya terlihat seperti:
could not find driveratau:
PDOException: could not find driverArtinya PHP sudah mencoba menggunakan PDO, tetapi driver database yang dibutuhkan belum tersedia.
Contohnya Laravel menggunakan:
DB_CONNECTION=pgsqltetapi PHP belum memiliki extension PostgreSQL.
1. Periksa Database yang Digunakan
Buka file .env:
DB_CONNECTION=mysqlatau:
DB_CONNECTION=pgsqlatau:
DB_CONNECTION=sqliteJenis database menentukan extension PHP yang harus tersedia.
2. Periksa Extension PHP
Jalankan:
php -mUntuk mencari driver tertentu:
php -m | grep -E 'pdo|mysql|pgsql|sqlite'Contoh hasil:
PDO
pdo_mysqlJika menggunakan PostgreSQL, seharusnya terdapat:
PDO
pdo_pgsql
pgsql3. Driver MySQL Tidak Ada
Untuk Ubuntu, install:
sudo apt install php-mysqlJika menggunakan versi PHP tertentu:
sudo apt install php8.3-mysqlKemudian restart PHP-FPM:
sudo systemctl restart php8.3-fpmPeriksa kembali:
php -m | grep pdo_mysqlJika muncul:
pdo_mysqldriver sudah aktif.
4. Driver PostgreSQL Tidak Ada
Jika Laravel menggunakan PostgreSQL:
DB_CONNECTION=pgsqlInstall extension:
sudo apt install php-pgsqlAtau versi tertentu:
sudo apt install php8.3-pgsqlRestart PHP-FPM:
sudo systemctl restart php8.3-fpmKemudian:
php -m | grep pgsqlHasil yang diharapkan:
pdo_pgsql
pgsql5. Driver SQLite Tidak Ada
Jika menggunakan SQLite:
DB_CONNECTION=sqliteInstall:
sudo apt install php-sqlite3Kemudian:
php -m | grep sqliteSeharusnya muncul:
pdo_sqlite
sqlite36. Perhatikan Versi PHP
Salah satu penyebab yang sering terjadi adalah CLI menggunakan PHP berbeda dengan PHP-FPM.
Periksa versi PHP:
php -vKemudian:
php --iniContohnya:
PHP 8.3Tetapi website menggunakan:
PHP 8.2Extension yang terpasang pada PHP 8.3 belum tentu tersedia pada PHP 8.2.
7. Periksa PHP-FPM
Jika Laravel berjalan melalui Nginx dan PHP-FPM, periksa service:
systemctl status php8.3-fpmPastikan versi PHP-FPM sesuai dengan PHP yang digunakan aplikasi.
Contohnya:
Nginx
↓
PHP 8.3 FPM
↓
LaravelJika extension dipasang pada PHP 8.3 tetapi Nginx menggunakan PHP 8.2, error tetap dapat muncul.
8. Gunakan phpinfo untuk Website
Buat file:
<?php
phpinfo();Misalnya simpan sebagai:
public/info.phpKemudian buka:
https://example.com/info.phpCari bagian:
PDOdan:
PDO driversContohnya:
PDO drivers => mysqlJika menggunakan PostgreSQL:
PDO drivers => pgsqlSetelah selesai melakukan pengecekan, hapus file info.php karena halaman tersebut menampilkan informasi konfigurasi server.
9. Jika Menggunakan cPanel
Pada cPanel, extension PHP biasanya dapat diaktifkan melalui:
cPanel
↓
Select PHP Version
↓
ExtensionsCari dan aktifkan:
pdo_mysqluntuk MySQL.
Untuk PostgreSQL:
pdo_pgsql
pgsqlUntuk SQLite:
pdo_sqlite
sqlite3Nama menu dapat berbeda tergantung konfigurasi hosting.
10. Jika Menggunakan XAMPP
Pada XAMPP Windows, buka:
php.iniCari extension yang dibutuhkan.
Contohnya MySQL:
extension=pdo_mysqlPostgreSQL:
extension=pdo_pgsql
extension=pgsqlSQLite:
extension=pdo_sqlite
extension=sqlite3Setelah mengubah php.ini, restart Apache pada XAMPP.
Kemudian cek:
php -mPastikan PHP CLI juga menggunakan PHP dari XAMPP jika aplikasi dijalankan melalui terminal.
11. Jika Menggunakan Docker
Pada Docker, extension harus tersedia di dalam container PHP.
Contoh Dockerfile:
FROM php:8.3-fpm
RUN docker-php-ext-install pdo pdo_mysqlUntuk PostgreSQL:
RUN docker-php-ext-install pdo pdo_pgsqlSetelah mengubah Dockerfile:
docker compose build --no-cache
docker compose up -dKemudian periksa extension:
docker compose exec app php -mPastikan pdo_mysql atau pdo_pgsql muncul.
12. Bersihkan Cache Laravel
Setelah driver sudah terpasang, bersihkan konfigurasi Laravel:
php artisan optimize:clearKemudian:
php artisan config:cacheTes koneksi:
php artisan migrate:statusJika berhasil, Laravel sudah dapat menggunakan driver database tersebut.
13. Pastikan .env Sesuai
Contoh MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=passwordPostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=passwordSQLite:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/database/database.sqlitePastikan DB_CONNECTION sesuai dengan driver PHP yang tersedia.
14. Perbedaan Driver dan Connection Refused
Error ini berbeda dengan:
SQLSTATE[HY000] [2002] Connection refusedCould Not Find Driver
Biasanya berarti:
PHP
↓
PDO
↓
Driver tidak tersediaSedangkan Connection Refused berarti driver sudah tersedia, tetapi PHP tidak berhasil terhubung ke server database.
Contohnya:
PHP
↓
pdo_mysql ✓
↓
MySQL
↓
Connection ditolakJadi solusi keduanya berbeda.
15. Checklist Troubleshooting
Gunakan urutan berikut:
1. Cek DB_CONNECTION
↓
2. Cek php -v
↓
3. Cek php -m
↓
4. Pastikan driver tersedia
↓
5. Cek versi PHP-FPM
↓
6. Install extension
↓
7. Restart PHP-FPM / Apache
↓
8. php artisan optimize:clear
↓
9. php artisan migrate:statusJika menggunakan Docker atau cPanel, lakukan pengecekan pada environment tempat Laravel benar-benar berjalan.
Contoh Kasus
Misalnya muncul:
PDOException:
could not find driverSedangkan .env:
DB_CONNECTION=pgsqlJalankan:
php -m | grep pgsqlJika tidak ada hasil, install:
sudo apt install php8.3-pgsqlKemudian:
sudo systemctl restart php8.3-fpm
php artisan optimize:clear
php artisan migrate:statusJika koneksi berhasil, masalah sudah teratasi.
Troubleshooting Laravel Bersama Ovla Media
Ovla Media dapat membantu dalam konfigurasi dan maintenance aplikasi Laravel, termasuk:
Instalasi PHP extension.
Konfigurasi MySQL.
Konfigurasi PostgreSQL.
Setup PHP-FPM.
Setup Nginx.
Konfigurasi cPanel.
Docker Laravel.
Deployment production.
Optimasi server.
Maintenance aplikasi Laravel.
Konfigurasi dapat disesuaikan dengan environment VPS, cPanel, Docker, maupun server internal.
Kesimpulan
Error “Could Not Find Driver” pada Laravel biasanya terjadi karena PHP belum memiliki driver database yang dibutuhkan.
Driver yang umum digunakan:
MySQL → pdo_mysql
PostgreSQL → pdo_pgsql
SQLite → pdo_sqliteLangkah utama:
php -mKemudian install extension yang sesuai, restart PHP-FPM atau Apache, dan bersihkan cache Laravel:
php artisan optimize:clearTerakhir, lakukan pengujian:
php artisan migrate:statusJika driver sudah tersedia dan konfigurasi .env benar, Laravel seharusnya dapat terhubung ke database tanpa error tersebut.
Artikel Terkait
Cara Mengatasi Database Connection Refused pada Laravel
Error “Database Connection Refused” pada Laravel biasanya terjadi ketika aplikasi tidak dapat terhubung ke server database. Penyebabnya dapat berasal dari konfigurasi .env, database yang belum berjalan, port yang salah, firewall, Docker, atau konfigurasi server. Berikut langkah sederhana untuk menemukan dan mengatasinya.
Cara Membuat Backup Database Laravel Otomatis Setiap Hari
Backup database Laravel otomatis membantu melindungi data aplikasi dari kerusakan server, kesalahan pengguna, atau kehilangan data. Dengan Laravel Scheduler dan cron job, proses backup dapat dijalankan secara rutin setiap hari tanpa dilakukan secara manual.
Cara Membuat Sistem Approval Bertingkat di Laravel
Sistem approval bertingkat pada Laravel memungkinkan sebuah pengajuan melewati beberapa tahap persetujuan sebelum dinyatakan selesai. Sistem ini cocok untuk pengajuan cuti, pembelian, reimbursement, dokumen, anggaran, hingga proses bisnis yang membutuhkan persetujuan beberapa level.