我们可以在 php.ini 中有 2 个 'extension_dir' 吗?

Nyx*_*nyx 4 php centos php.ini apache-2.2

当我安装 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"
Run Code Online (Sandbox Code Playgroud)

修改工作

; 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"
Run Code Online (Sandbox Code Playgroud)
  1. 为什么 PECL 将 pdo-pgsql 安装到第二个扩展目录而不是第一个?

  2. 是否建议使用 2 extension_dir,如上面的第二个代码片段所示?

qua*_*nta 8

  1. 因为它是安装时的默认位置 via pecl install,而如果从源代码编译 PHP,扩展路径应该是/usr/local/lib/php/extensions/no-debug-non-zts-20090626.

  2. 据我所知,PHP 不支持多个extension_dir,它只选择最后一个。只需键入php -i | grep eaccelerator即可查看会发生什么。

解决方法是将扩展复制到正确的路径。

  • 或制作符号链接... (2认同)