web-dev-qa-db-ja.com

PHP致命的エラー:クラス「PDO」が見つかりません

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

46
Amanada Smith

試してみる

 yum install php-pdo
 yum install php-pdo_mysql

 service httpd restart
60
Bảo Nam

名前空間の後、クラスの直前、またはPHPファイルの先頭にuse PDO;を追加してみてください。

46
Jo Smo

これは、Webアプリの現在の作業ディレクトリにphp.iniファイルがある場合にも発生する可能性があります。特定の設定を変更するためにそこに配置されている場合、グローバル設定を上書きします。

この問題を回避するには、php.iniファイルを使用して設定を変更しないでください。代わりに次のことができます。

  • 仮想ホスト宣言で設定を指定する
  • .htaccessphp_flagファイルを使用します( こちらを参照
  • .user.iniファイルを使用します( こちらを参照
21
Alastair Irvine

Php.iniファイルで呼び出されていることを確認してください

現在インストールされているphpモジュールのリストにPDOが表示されている場合、関連するフォルダーのphp.iniファイルをチェックして、それらが呼び出されていることを確認する必要があります。 php.iniファイルのどこかに、次が表示されます。

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

存在しない場合は、上記の行をphp.iniファイルの最後に追加して保存します。

12
Bruno Ribeiro

ファイルMysql.phpの完全なソースは何ですか。 php情報リストの出力に基づいて、名前空間内からグローバルクラスを参照しようとしているようです。

ファイルMysql.phpにステートメント "namespace"がある場合、PDOの代わりに\PDOを使用します-これは、PHPにグローバルクラスを探すように指示しますローカルの名前空間を見るよりも。

9
Stephen

GoDaddyでも同じ問題がありました。 extension=pdo.sophp.iniに追加しましたが、まだ機能しませんでした。そして、ただ一つのことだけが思い浮かびました:Permissions

ファイルをアップロードする前に、すべてのPHPプロセスを強制終了します(cPanel-> PHPプロセス)。

問題は、ファイル許可で、0644に設定され、実行可能でなかったことです。少なくとも0755のファイル許可を設定する必要があります。

Permissions

3
Rust

ライブラリ PHP_PDO で解決しました。これは、私のホスティングプロバイダーがApacheサーバーへのPDOドライバーのインストール要件を受け入れなかったためです。

1
Pavel Hájek

以下のコマンドを実行して、ロードされた設定ファイルを見つけることができます。

 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
1
Hasitha

このエラーは、PDOがPHPで利用できないために発生します。

コマンドラインでエラーが発生している場合、またはWebサイトがPHPに使用しているのと同じインターフェイスを介していない場合、PHPの異なるバージョンを呼び出しているか、phpinfo()を確認するときに異なるphp.ini構成ファイルを使用している可能性があります。

PDOがロードされていることを確認し、データベースのPDOドライバーもロードされます。

0
Predominant

Php-fpmモジュールでphpを実行する場合、コマンドsystemctl restart php-fpmを実行することを忘れないでください!.

0
user10965860