2011-12-06 43 views
6

我试图在RHEL5盒子上安装freetds和php-mssql。我已经成功完成了(似乎是)的一切。不过,我得到以下错误,当PHP尝试加载模块:带有不正确编译API的PHP模块(无法初始化)

PHP Warning: PHP Startup: mssql: Unable to initialize module 
Module compiled with module API=20090626, debug=0, thread-safety=0 
PHP compiled with module API=20050922, debug=0, thread-safety=0 
These options need to match 

我一直在拉我的大脑就试图弄明白为什么他们是不同的值,但没有成功。

在最新的尝试中,我下载了我正在运行的版本(php-5.3.8)的php源代码,进入ext/mssql文件夹并运行phpize,configure,make,make install。

我验证了mssql.so文件位于相应的文件夹中,并且该php正在尝试加载它。

phpize -v 
Configuring for: 
PHP Api Version:   20050922 
Zend Module Api No:  20090626 
Zend Extension Api No: 220090626 

回答

11

RHEL有一个老版本的php(5.1.x),并且安装更新的PHP版本(如5.3.x)意味着一些更改。如果您从非官方回购安装,您将看到名为php- *和php5- *的软件包。两种版本都可能是问题的根源。

它看起来像你的系统正在访问以前的PHP安装一些配置文件。请看看/ usr/bin/php-config *,如果你有两个php-config的话,和php-config5,删除(重命名)的/ usr/bin中/ PHP的配置,并作出一个符号链接到新的一个:

# mv /usr/bin/php-config /usr/bin/php-config_old 
# ln -s /usr/bin/php-config5 /usr/bin/php-config 

希望这有助于

+0

谢谢。我开始理论上可能会安装两个版本的php。我注意到php-config的版本=“5.1.6”,但是php -v显示版本为5.3.8。没有php-config5文件存在。 –

+0

如果在/ usr/bin中不存在,我可以在哪里找到更新版本的php-config?我需要做一个新的安装PHP 5.3.8(这是什么PHP运行)复制php-config? –

+1

非常感谢,这让我很头疼。我试图在osx上设置memcached,但一直存在这个问题。最终我用pecl安装'pecl install memcached',一旦我将php,phpize和php-config版本更正为由MAMP提供的版本 – jackofallcode

1

我可以确认的是,当一个模块没有按”因为一个不同的API,这是因为一个旧的php-config。然后,您必须查看/ usr/bin/php-config并用新版本覆盖它。

+0

谢谢David。你有关于如何继续的建议(参考左边的在先答案的评论) –

+0

@AndrewVogel:我已经在php文件夹中发现了新的php-config,但是我已经从tarball安装了php。我认为旧的php-config来自像apt-get这样的远程安装。我遇到了与eaccelarator相同的问题。你是这个意思吗? – Bytemain

+0

是的..你有哪个文件夹有新的php-config?或者是在你的/ usr/bin文件夹中,如jap1968所示?如果我在任何地方都没有更新的php-config,我想我唯一的选择就是重新安装php? –

相关问题