€ PDOException driverâ € bulmak değil œcould?

9 Cevap php

Ben sadece Apache, MySQL ve PHP ile Debian Lenny yüklü ve ben bir PDOException could not find driver alıyorum.

Bu başvurduğu kod belirli satır:

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)

DB_HOST, DB_NAME, DB_USER ve DB_PASS I tanımlanmış sabitlerdir. Bu üretim sunucusunda çalışıyor (ve benim önceki Ubuntu Server kurulumu ile ilgili).

Bu benim PHP kurulumu ile ilgili bir şey var mı?

Internet yardımcı değil arıyor, ben olsun tüm uzmanlar değişimi ve örnekler, ama hiçbir çözüm.

9 Cevap

Sen pdo_mysql adlı bir modül olması gerekir. ,) (Phpinfo aşağıdaki arıyor

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44

Kodunuzda dsn'sini size mysql sürücü ile bağlanmaya çalışıyorsunuz ortaya koymaktadır. Sizin hata iletisi, bu sürücü kullanılamaz olduğunu gösterir.

Eğer sunucu üzerinde yüklü mysql uzantısı olduğunu kontrol edin.

Ubuntu / Debian sizinle paketi için kontrol edin:

dpkg --get-selections | grep php5-mysql

Eğer yoksa php5-mysql paketini yükleyin.

Ubuntu / Debian kullanabilirsiniz:

sudo apt-get install php5-mysql

Son olarak, Apache ile çalışan almak için, Apache yeniden başlatmanız gerekir.

sudo /etc/init.d/apache2 restart
sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart

Lütfen phpinfo () PDO_SQLITE hattını gösteren değilse (benim durumumda, benim Ubuntu Server), sadece yukarıdaki satırları çalıştırmak ve daha sonra gitmek iyi olacak gerekir.

MySQL ve sürücüsünün doğru kurulmuş olup olmadığını () (phpinfo ile doğru konuma kontrol) php.ini kontrol ettin mi?

Ubuntu sadece execute

sudo apt-get install php5-mysql

Benim durumumda benim DSN dize özellikle o mysql://. Ben farklı bir hata mesajı gibi, belki bir şey umuyordum içermiyordu, yanlış oldu 'DSN dize sürücü / protokolünü belirlemek değildir.'

DSN dize başına mysql:// ekleme sorunu çözüldü.

Benim Windows makine, benim php.ini içindeki uzantısı dir mutlak yol vermek zorunda kaldı:

extension_dir = "c:\php5\ext"

$DB_TYPE = 'mysql'; //Type of database<br>
$DB_HOST = 'localhost'; //Host name<br>
$DB_USER = 'root'; //Host Username<br>
$DB_PASS = ''; //Host Password<br>
$DB_NAME = 'database_name'; //Database name<br><br>

$dbh = new PDO("$DB_TYPE:host=$DB_HOST; dbname=$DB_NAME;", $DB_USER, $DB_PASS); // PDO Connection

Bu benim için çalıştı.

I Fixed this issue on my Debian 6. Normally I just had installed php5-common package. After installation, you have to restart your web server (apache or nginx depending on which one you installed). Then I just do an lsof on the apache process id (lsof -p process_id) as followed :

sudo lsof -p 1399   #replace 1399 by your apache process id
apache2 1399 root  mem    REG  254,2    80352 227236 /usr/lib/php5/20090626/xmlrpc.so
apache2 1399 root  mem    REG  254,2   166496 227235 /usr/lib/php5/20090626/suhosin.so
apache2 1399 root  mem    REG  254,2    31120 227233 /usr/lib/php5/20090626/pdo_mysql.so
apache2 1399 root  mem    REG  254,2   100776 227216 /usr/lib/php5/20090626/pdo.so
apache2 1399 root  mem    REG  254,2   135864 227232 /usr/lib/php5/20090626/mysqli.so

Yukarıda gördüğünüz gibi, modüller ortak kütüphane yoluna tarafından bilinen ya da güdümlü bir dosya yolu üzerinde yüklü: / usr/lib/php5/20090626/. Lütfen kurulum için, bu farklı olabilir, ama pdo_mysql.so, pdo.so, mysqli.so sadece yolu. Yani, bu Drupal veya herhangi bir diğer php motoru kütüphane bulamadı neden ve gösterir hata: PDOException: could not find driver

I just don't know why it is installed on such a weird path, for me it's just a bug in the library package installation script in debian 6. I solved the issue by creating a symbolic for all the files under /usr/lib/php5/20090626/ to /usr/lib/php5/ with this command :

ln -s /usr/lib/php5/20090626/* /usr/lib/php5/