2012-02-17 9 views
4

私はphp5-fpmでnginxを使用していますが、何故私のphp5-fpmは「Module 'PDO」が未知の行0に既にロードされています。アイデア理由。拡張子はphp.iniの中には読み込まれませんが、pdo.iniをロードする "--with-config-file-scan-dir"からロードされます。もちろんpdo.soをロードします。モジュール 'PDO'が未知の行に既にロードされています0

my php config is as私は私の作品解決策を見つけることができないよう

'./configure' '--prefix=/opt/php5' '--with-config-file-path=/etc/php5' '--with-config-file-scan-dir=/etc/php5/conf.d' '--with-curl' '--with-pear' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-xpm-dir' '--with-freetype-dir' '--with-t1lib' '--with-mcrypt' '--with-mhash' '--with-mysql' '--with-mysqli' '--with-pdo-mysql' '--with-openssl' '--with-xmlrpc' '--with-xsl' '--with-bz2' '--with-gettext' '--with-readline' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-debug' '--enable-fpm' '--enable-cli' '--enable-inline-optimization' '--enable-exif' '--enable-wddx' '--enable-zip' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-mbstring' '--enable-soap' '--enable-sockets' '--enable-sqlite-utf8' '--enable-shmop' '--enable-dba' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg'

に従います。

私はPDO拡張モジュールがロードされたかどうかを確認するために私のphpinfo()をチェックし、(私がpdo.iniからpdo.soをロード削除しても)ロードされているようだ、まだ私はPDOを使用しようとすると、私は

Fatal Error: Class 'PDO' not found

を取得

私はまた、suhosin.so,apc.so、およびimagick.soを問題なくロードしていることを指摘します。

インストールされているパッケージのリスト(phpとmysql)うまくいけば、これで私を助けてくれるいくつかの情報が得られます。私の構成が過去6ヶ月間、問題なく動作していることにも注目してください。私はVladGHのインストールスクリプト(https://github.com/vladgh/VladGh.com-LEMP)を使ってインストールしました。これは私の開発環境です。必要があれば、私はサーバーの完全な再インストールを行うこと以上に喜んでいますが、私はむしろこれを理解しています。

dpkg --get-selections | grep php 
    libapache2-mod-php5        install 
    php5-cgi          install 
    php5-cli          install 
    php5-common          install 
    php5-mysql          install 
    php5-suhosin         install 

dpkg --get-selections | grep mysql 
    courier-authlib-mysql       install 
    libdbd-mysql-perl        install 
    libmysql++3          deinstall 
    libmysqlclient16        install 
    mysql-client-5.1        install 
    mysql-client-core-5.1       install 
    mysql-common         install 
    mysql-server         install 
    mysql-server-5.1        install 
    mysql-server-core-5.1       install 
    php5-mysql          install 
    postfix-mysql         install 

この問題を解決する方法について多数の解決策を試した後、私は自分のマシンに完全に再インストールすることにしました。

+0

あなたはシステム提供のパッケージを使用していますか?もしそうなら、どのものがインストールされていますか? UbuntuはPHPのバージョンをかなり新鮮に保ち、さらに多くのPECL拡張をビルドするので、通常はカスタムコンパイルの必要はありません。 – Charles

+0

元々PHPをビルドしました。それ以来、私はapt-get:php5-dev(削除してパージしたもの)、php-pear(削除してパージしたもの)、libmysqlclient-dev&mysql-client(アップデート)、libmysql ++ - dev、phpize、 mongodb。任意のアイデア、私はパッケージを介してPHPを再コンパイルする必要がありますか? –

+0

ディストリビューションで提供されるバイナリパッケージを使用することは、あなた自身をコンパイルするのではなく、ほとんどいつでもベストベットです。 'php5-mysql'、' php5-pgsql'、 'php5-sqlite'パッケージはそれぞれPDOとドライバを提供します。 – Charles

答えて

5

From PHP 5.1のように、PDOはPHPコアディストリビューションの一部なので、拡張子としてロードされたpdo.soは冗長になります。私の場合は

+0

それは私が思ったことですが、私はpdo.soをロードして削除すると "クラス 'PDO'が見つかりませんでした。:\ –

+0

PDOドライバ拡張をロードする必要があります。基本PDOクラスのみがPHP – dweeves

+0

にバンドルされています。PDOドライバ拡張のロード方法を教えてください。これは、 "モジュール 'PDO'が既にロードされているというエラーをスローしますか?すべての質問について申し訳ありません。あなたの言っていることはまったく得られません。 –

0

、それが助けた:apt-getをインストール--reinstallのphp5-mysqlの

関連する問題