2012-02-17 108 views
4

我正在使用nginx和php5-fpm,由于某种原因我的php5-fpm一直在说“模块'PDO'已经加载到未知的行0”,老实说我没有想法为什么。扩展未加载php.ini中,但它是从装“--with-配置文件扫描的目录”,它加载pdo.ini当然和负载pdo.soModule'PDO'already loaded in Unknown line 0

我的PHP的配置是如下

'./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'

我似乎无法找到适合我的解决方案。

我检查了我的phpinfo(),看看PDO扩展加载,它似乎被加载(甚至当我删除加载从pdo.ini的pdo.so)然而,当我尝试使用PDO我得到

Fatal Error: Class 'PDO' not found

我还要指出,我也正在加载suhosin.so,apc.soimagick.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 2012-02-17 15:22:29

+0

最初我建立了PHP。从那时起,我通过apt-get安装了以下内容:php5-dev(我随后删除并清除),php-pear(已删除并清除),libmysqlclient-dev和mysql-client(更新),libmysql ++ - dev,phpize, MongoDB的。任何想法,我应该通过包重新编译PHP吗? – 2012-02-17 22:23:43

+0

使用发行版提供的二进制包几乎总是您最好的选择,而不是编译自己。每个'php5-mysql','php5-pgsql'和'php5-sqlite'包都提供了PDO和驱动程序。 – Charles 2012-02-17 22:52:28

回答

5

From PHP 5.1,PDO是PHP Core distrib的一部分,因此作为扩展加载的pdo.so变得多余。

+0

这就是我的想法,但是当我删除加载pdo.so时,我得到了“致命错误:没有找到类'PDO'。:\ – 2012-02-17 10:11:05

+0

然而,你应该加载PDO驱动程序扩展。只有基地PDO类是捆绑在PHP – dweeves 2012-02-17 10:28:16

+0

我将如何去加载PDO驱动程序扩展..我认为这将需要我做扩展= p​​do .so然后抛出错误“模块”PDO'已经加载“?抱歉所有的问题大声笑,只是不太明白你的意思。 – 2012-02-17 10:33:41

0

在我而言,它帮助:的apt-get安装PHP5 --reinstall-mysql的

相关问题