当我安装pdo-pgsql时,扩展名被安装到/usr/lib/php/extensions/no-debug-non-zts-20090626/ ,因此不会自动加载。 在php.ini ,我已经定义了extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626" 。
php.ini片段
; Directory in which the loadable extensions (modules) reside. extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626" zend_extension = "/usr/local/IonCube/ioncube_loader_lin_5.3.so" zend_extension = "/usr/local/Zend/lib/Guard-5.5.0/php-5.3.x/ZendGuardLoader.so" extension = "eaccelerator.so" extension = "pdo.so" extension = "pdo_pgsql.so" extension = "pdo_sqlite.so" extension = "sqlite.so" extension = "pdo_mysql.so"
修改工作
; Directory in which the loadable extensions (modules) reside. extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626" extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20090626" zend_extension = "/usr/local/IonCube/ioncube_loader_lin_5.3.so" zend_extension = "/usr/local/Zend/lib/Guard-5.5.0/php-5.3.x/ZendGuardLoader.so" extension = "eaccelerator.so" extension = "pdo.so" extension = "pdo_pgsql.so" extension = "pdo_sqlite.so" extension = "sqlite.so" extension = "pdo_mysql.so"
为什么PECL将pdo-pgsql安装到第二个扩展目录而不是第一个?
build议如上面的第二个代码片段所示,有2个extension_dir ?
因为这是通过pecl install时的默认位置,而如果从源代码编译PHP,扩展path应该是/usr/local/lib/php/extensions/no-debug-non-zts-20090626 。
据我所知,PHP不支持多个extension_dir ,只能select最后一个。 只需键入php -i | grep eaccelerator php -i | grep eaccelerator来看看会发生什么。
解决方法是将扩展名复制到正确的path。