disket.net Beta
Konu Listesine Dön

PHP'de PDO ile MySQL bağlantısı neden hata veriyor? (Fatal error: Uncaught PDOException)

Programlama Açılış: 29.07.2026 13:03 5 Görüntülenme
Selam millet, birazdan anlatacağım sorun yüzünden 2 saattir kafayı yemek üzereyim. Localhost'ta XAMPP üzerinde çalışıyorum, PHP 8.2 sürümü var. MySQL veritabanına PDO ile bağlanmaya çalışıyorum ama sürekli şu hatayı alıyorum:

Fatal error: Uncaught PDOException: could not find driver in C:\xampp\htdocs\deneme\index.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\deneme\index.php on line 3

php.ini dosyasını kontrol ettim, extension=php_pdo_mysql.dll satırının başındaki noktalı virgülü kaldırdım, hatta extension_dir yolunu da doğruladım ama hala aynı hata. phpinfo() sayfasında PDO sürücüleri kısmında sadece 'sqlite' görünüyor, 'mysql' yok. XAMPP kontrol panelinden Apache'yi durdurup başlattım, bilgisayarı restart bile ettim ama nafile. Başka bir yerde yapmam gereken bir ayar mı var? Yoksa PHP sürümüyle mi ilgili? Yardımcı olursanız sevinirim, şimdiden teşekkürler.

Cevaplar (3)

Merhaba, bu sorun genelde PDO MySQL driver'ının doğru yüklenmemesinden kaynaklanıyor. XAMPP'de PHP 8.2 ile birlikte gelen 'php_pdo_mysql.dll' dosyası mevcut ama bazen extension_dir yanlış gösteriliyor veya PHP'nin farklı bir konfigürasyon dosyasını okuyor olabilir. Öncelikle şunları kontrol et:

1. php.ini dosyasının doğru yerde olduğundan emin ol. XAMPP'de genelde 'C:\xampp\php\php.ini' yolundadır. Ama Apache'nin hangi php.ini'yi kullandığını phpinfo() sayfasında 'Loaded Configuration File' satırından görebilirsin.

2. php.ini içinde 'extension_dir' satırını bul ve şuna benzer bir değer olmalı: extension_dir = "C:\xampp\php\ext"

3. 'extension=php_pdo_mysql.dll' satırının başında noktalı virgül olmadığından emin ol. Ayrıca 'extension=php_mysqli.dll' ve 'extension=php_pdo.dll' satırlarını da etkinleştirmeyi dene.

4. Değişikliklerden sonra XAMPP kontrol panelinden Apache'yi durdurup başlatmayı unutma. Eğer hala çalışmazsa, 'C:\xampp\php\ext' klasöründe 'php_pdo_mysql.dll' dosyasının var olduğunu kontrol et. Yoksa, XAMPP'i yeniden kurmayı düşünebilirsin.

Umarım işe yarar, kolay gelsin!



php.ini içinde 'extension_dir' satırını bul ve şuna benzer bir değer olmalı: extension_dir = "C:\xampp\php\ext"



Siliconmechanic90'ın dediğine ek olarak, bazen PHP'nin 64-bit veya 32-bit sürümüyle ilgili uyumsuzluk olabiliyor. XAMPP'in 64-bit sürümünü kullanıyorsan, 'php_pdo_mysql.dll' dosyasının da 64-bit olması gerekir, ama genelde XAMPP içinde bu sorun olmaz.

Bir diğer olasılık: Windows'ta PATH değişkenine PHP'nin bulunduğu dizini eklememiş olabilirsin. Komut satırında 'php -m' yazarak hangi modüllerin yüklü olduğunu görebilirsin. Eğer 'mysql' modülü listede yoksa, PHP'nin doğru php.ini dosyasını okumadığı anlamına gelir.

Ayrıca, phpinfo() çıktısında 'PDO drivers' kısmında 'mysql' yoksa, büyük ihtimalle driver yüklenmemiştir. Bunun için 'C:\xampp\php\ext' klasöründe 'php_pdo_mysql.dll' dosyasını bul ve sağ tıklayıp özelliklerden 'Dijital İmzalar' sekmesini kontrol et, dosya bozuk olabilir. XAMPP'i yeniden yüklemek en temiz çözüm olabilir.
Sorun çözüldü! Çok teşekkür ederim ikinize de. Siliconmechanic90'ın dediği gibi php.ini dosyasının yolunu kontrol ettim, meğer Apache farklı bir php.ini okuyormuş. XAMPP'in 'apache\bin' klasöründe de bir php.ini vardı ve orada PDO MySQL extension etkin değilmiş. Onu düzelttim ve şimdi çalışıyor. Help.php'nin dediği gibi 'php -m' ile de kontrol ettim, mysql modülü görünüyor. Sağolun dostlar, iyi ki varsınız!

Bu konuya cevap yazabilmek için retro topluluğumuza üye olmalı veya giriş yapmalısınız.

İlgili Konular & Benzer Paylaşımlar

PIC16F628A ile C'de RF alıcı-verici protokolü: Manchester kodlama sorunu Kategori: Programlama
ESP32'de FreeRTOS ile Task Önceliklendirme Sorunu - Watchdog Reset Yiyorum Kategori: Programlama
Turbo Pascal ile COM port üzerinden veri okurken program donuyor, yardım! Kategori: Programlama