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
essayer
yum install php-pdo
yum install php-pdo_mysql
service httpd restart
Essayez d’ajouter use PDO;
après votre espace de noms ou juste avant votre classe ou en haut de votre fichier PHP
.
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:
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.
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.
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
.
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.
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.
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.