it-swarm.com.de

PHP Schwerwiegender Fehler: Klasse 'PDO' nicht gefunden

PHP Fatal error:  Class 'PDO' not found in /home/bd/public_html/app/webroot/Cake/Model/Datasource/Database/Mysql.php on line 177

PHP INFO:

PDO

PDO support => enabled
PDO drivers => sqlite, sqlite2, mysql

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => 5.5.24

Directive => Local Value => Master Value
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.7.7.1

PHP INI:

extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=pdo_mysql.so

CODE:

/**
 * Check whether the MySQL extension is installed/loaded
 *
 * @return boolean
 */
        public function enabled() {
                return in_array('mysql', PDO::getAvailableDrivers());
        }

Ideen, warum ich diesen Fehler bekomme?

PHP 5.3.15 CloudLinux/CentOS 6 CPanel

42
Amanada Smith

versuchen

 yum install php-pdo
 yum install php-pdo_mysql

 service httpd restart
55
Bảo Nam

Fügen Sie use PDO; nach Ihrem Namespace oder direkt vor Ihrer Klasse oder am Anfang Ihrer PHP-Datei ein.

44
Jo Smo

Dies kann auch passieren, wenn sich im aktuellen Arbeitsverzeichnis der Web-App eine php.ini-Datei befindet. Wenn eine zur Änderung bestimmter Einstellungen dorthin gestellt wurde, wird die globale Einstellung überschrieben.

Um dieses Problem zu vermeiden, verwenden Sie keine php.ini-Datei zum Ändern der Einstellungen. stattdessen können Sie:

  • Legen Sie Einstellungen in der vhost-Deklaration fest
  • Verwenden Sie eine .htaccess-Datei mit php_flag ( siehe hier )
  • Verwenden Sie eine .user.ini-Datei ( siehe hier )
21
Alastair Irvine

Stellen Sie sicher, dass sie in der Datei php.ini aufgerufen werden

Wenn das PDO in der Liste der aktuell installierten PHP-Module angezeigt wird, sollten Sie die Datei php.ini im entsprechenden Ordner überprüfen, um sicherzustellen, dass sie aufgerufen werden. Irgendwo in der php.ini-Datei sollten Sie Folgendes sehen:

extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so

Wenn sie nicht vorhanden sind, fügen Sie die Zeilen oben am Ende der Datei php.ini hinzu und speichern Sie sie. 

11
Bruno Ribeiro

Was ist die vollständige Quelle der Datei Mysql.php. Basierend auf der Ausgabe der PHP-Infoliste klingt es so, als würden Sie versuchen, eine globale Klasse aus einem Namespace heraus zu referenzieren.

Wenn die Datei Mysql.php eine Anweisung "Namespace" enthält, verwenden Sie \PDO anstelle von PDO. Dies weist PHP an, nach einer globalen Klasse zu suchen, anstatt im lokalen Namespace zu suchen.

9
Stephen

Ich hatte das gleiche Problem bei GoDaddy. Ich habe extension=pdo.so zu php.ini hinzugefügt, aber es hat immer noch nicht funktioniert. Und dann fiel mir nur eines ein: Permissions 

Beenden Sie vor dem Hochladen der Datei alle PHP - Prozesse (cPanel> PHP Processes).

Das Problem war, dass es mit den file-Berechtigungen auf 0644 gesetzt war und nicht ausführbar war. Sie müssen die Dateiberechtigung mindestens auf 0755 einstellen.

 Permissions

2
Rust

Ich habe es mit library PHP_PDO gelöst, da mein Hosting-Provider meine Anforderung für die Installation des PDO-Treibers auf dem Apache-Server nicht akzeptierte.

1
Pavel Hájek

sie können die geladene Konfigurationsdatei einfach herausfinden, indem Sie den folgenden Befehl ausführen:

 php -i | grep 'php.ini'

Fügen Sie dann die folgenden Zeilen hinzu, um die php.ini-Datei zu korrigieren

extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so

Starten Sie dann den Webserver neu.

service httpd restart
1
Hasitha

Dieser Fehler wird dadurch verursacht, dass PDO für PHP nicht verfügbar ist.

Wenn Sie den Fehler in der Befehlszeile erhalten oder nicht über dieselbe Schnittstelle, die Ihre Website für PHP verwendet, rufen Sie möglicherweise eine andere Version von PHP auf oder verwenden eine andere php.ini-Konfigurationsdatei, wenn Sie phpinfo() überprüfen.

Stellen Sie sicher, dass das PDO geladen ist und die PDO-Treiber für Ihre Datenbank ebenfalls geladen sind.

0
Predominant

Wenn Sie php mit dem php-fpm-Modul ausführen, vergessen Sie nicht, den Befehl systemctl zu starten, um php-fpm neu zu starten. Dadurch wird das php-fpm-Modul neu geladen.

0
user10965860