PHP Fatal error: Class 'PDO' not found in /home/bd/public_html/app/webroot/Cake/Model/Datasource/Database/Mysql.php on line 177
PHP情報:
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
コード:
/**
* Check whether the MySQL extension is installed/loaded
*
* @return boolean
*/
public function enabled() {
return in_array('mysql', PDO::getAvailableDrivers());
}
このエラーが発生する理由についてのアイデアは?
PHP 5.3.15 CloudLinux/CentOS 6 CPanel
試してみる
yum install php-pdo
yum install php-pdo_mysql
service httpd restart
名前空間の後、クラスの直前、またはPHP
ファイルの先頭にuse PDO;
を追加してみてください。
Php.iniファイルで呼び出されていることを確認してください
現在インストールされているphpモジュールのリストにPDOが表示されている場合、関連するフォルダーのphp.iniファイルをチェックして、それらが呼び出されていることを確認する必要があります。 php.iniファイルのどこかに、次が表示されます。
extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so
存在しない場合は、上記の行をphp.iniファイルの最後に追加して保存します。
ファイルMysql.php
の完全なソースは何ですか。 php情報リストの出力に基づいて、名前空間内からグローバルクラスを参照しようとしているようです。
ファイルMysql.php
にステートメント "namespace"がある場合、PDO
の代わりに\PDO
を使用します-これは、PHPにグローバルクラスを探すように指示しますローカルの名前空間を見るよりも。
ライブラリ PHP_PDO で解決しました。これは、私のホスティングプロバイダーがApacheサーバーへのPDOドライバーのインストール要件を受け入れなかったためです。
以下のコマンドを実行して、ロードされた設定ファイルを見つけることができます。
php -i | grep 'php.ini'
次に、以下の行を追加してphp.iniファイルを修正します
extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so
次に、Webサーバーを再起動します。
service httpd restart
このエラーは、PDO
がPHPで利用できないために発生します。
コマンドラインでエラーが発生している場合、またはWebサイトがPHPに使用しているのと同じインターフェイスを介していない場合、PHPの異なるバージョンを呼び出しているか、phpinfo()
を確認するときに異なるphp.ini
構成ファイルを使用している可能性があります。
PDOがロードされていることを確認し、データベースのPDOドライバーもロードされます。
Php-fpmモジュールでphpを実行する場合、コマンドsystemctl restart php-fpmを実行することを忘れないでください!.