web-dev-qa-db-fra.com

PHP Erreur fatale: classe 'PDO' introuvable

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());
        }

Idées pour lesquelles je reçois cette erreur?

PHP 5.3.15 CloudLinux/CentOS 6 CPanel

42
Amanada Smith

essayer

 yum install php-pdo
 yum install php-pdo_mysql

 service httpd restart
55
Bảo Nam

Essayez d’ajouter use PDO; après votre espace de noms ou juste avant votre classe ou en haut de votre fichier PHP.

44
Jo Smo

Cela peut également se produire s'il existe un fichier php.ini dans le répertoire de travail actuel de l'application Web. Si vous en avez placé un pour modifier certains paramètres, il remplace le paramètre global.

Pour éviter ce problème, n'utilisez pas un fichier php.ini pour modifier les paramètres. à la place, vous pouvez:

  • Spécifiez les paramètres dans la déclaration vhost
  • Utilisez un fichier .htaccess avec php_flag ( voir ici )
  • Utilisez un fichier .user.ini ( voir ici )
21
Alastair Irvine

Assurez-vous qu'ils sont appelés dans le fichier php.ini

Si le PDO est affiché dans la liste des modules php actuellement installés, vous voudrez vérifier le fichier php.ini dans le dossier approprié pour vous assurer qu'ils sont appelés. Quelque part dans le fichier php.ini, vous devriez voir ce qui suit:

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

S'ils ne sont pas présents, ajoutez simplement les lignes ci-dessus au bas du fichier php.ini et enregistrez-le. 

11
Bruno Ribeiro

Quelle est la source complète du fichier Mysql.php. D'après la sortie de la liste d'informations php, il semblerait que vous essayiez peut-être de référencer une classe globale à partir d'un espace de noms.

Si le fichier Mysql.php contient une instruction "namespace", utilisez \PDO à la place de PDO - cela dira PHP de rechercher une classe globale plutôt que de chercher dans l'espace de noms local.

9
Stephen

J'ai eu le même problème sur GoDaddy. J'ai ajouté le extension=pdo.so à php.ini, cela ne fonctionnait toujours pas. Et puis une seule chose m’est venue à l’esprit: Autorisations 

Avant de télécharger le fichier, supprimez tous les processus PHP (cPanel-> Processus PHP).

Le problème était qu'avec les autorisations de fichier , il était défini sur 0644 et n'était pas exécutable. Vous devez définir l'autorisation de fichier au moins 0755.

 Permissions

2
Rust

Je l'ai résolu avec la bibliothèque PHP_PDO , car mon fournisseur d'hébergement n'a pas accepté mon exigence d'installation du pilote PDO sur le serveur Apache.

1
Pavel Hájek

Cette erreur est due au fait que PDO n'est pas disponible pour PHP.

Si vous obtenez l'erreur sur la ligne de commande, ou pas via la même interface que votre site Web utilise pour PHP, vous appelez potentiellement une version différente de PHP ou utilisez un autre fichier de configuration php.ini lorsque vous vérifiez phpinfo().

Assurez-vous que PDO est chargé et que les pilotes PDO de votre base de données sont également chargés.

0
Predominant

Si vous utilisez php avec le module php-fpm, n'oubliez pas d'exécuter la commande systemctl restart php-fpm! Cela rechargera le module php-fpm.

0
user10965860