PHP编译安装新的扩展模块的时候存放的那个目录是在哪指定的?

周梦康
  • 8.9k

(解决)在phpize里获取的(代码应该是下面这段)

PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`


Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/

php-config里指定的么?
我现在遇到了一个问题,就是我新安装的模块都在这个目录下

/usr/lib/php/extensions/no-debug-non-zts-20090626/

为什么会生成到这个目录,这个20090626是该模块里面提供的版本号,还是我php-config指定的版本号呢?

但是我的系统里自带了一个(可能是默认自带的版本生成的)

/usr/lib/php/extensions/no-debug-non-zts-20100525/

现在的问题就是当我导入我新安装的模块的时候就出现版本不一的问题了:
以安装APC为例
我简单修改下:

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20090626/"
extension = apc.so

重启php-fpm的时候有如下错误提示:

NOTICE: PHP message: PHP Warning:  PHP Startup: apc: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match

原因因为安装的模块编译的版本和php编译的版本不一致导致的
我通过phpinfo()查看到PHP Extension 20100525

我也尝试着把新安装的模块移动到no-debug-non-zts-20100525,然后不修改默认的extension_dir发现还是有同样的问题。

回复
阅读 16.3k
2 个回答
dryyun
  • 5.4k
✓ 已被采纳

在php.ini 中有配置的
; extension_dir = "./"
修改成你现在的路径就好了

linux安装新模块后,都不直接使用默认的extension_dir地址,而是注释该地址后,使用组件编译后给出的URL地址

宣传栏