正如标题所描述的那样,我将PHP从5.6更改为7.0后,现在正在我的CI上收到此错误。如果我恢复到5.6但它需要我的服务器在7.0上,它工作正常。
遇到PHP错误
严重性:核心警告
消息:PHP启动:SourceGuardian:无法初始化使用模块API编译的模块模块= 20121212使用模块API编译的PHP = 20151012这些选项需要匹配
文件名:未知
行号:0
回溯:
答案 0 :(得分:0)
从我的2013年博文:https://delboy1978uk.wordpress.com/2013/10/30/manually-compiling-php-modules-successfully/
这看起来很熟悉吗?
PHP Warning: PHP Startup: memcached: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
我不了解你,但我喜欢与你约会!我的PHP是5.5,我不得不安装一些模块。但有时候,旧版本可能会让他们丑陋的头脑发作,并造成各种各样的悲伤。包裹经理可以很好地为您处理所有这些,但有时它们只是不起作用。让你自己编译!让我们来做吧!我要安装memcached,然后安装imagick库(现在我知道我在做什么!)
我在CentOS 6服务器上这样做,但是由于我们正在使用旧的skool编译方式等,这应该适用于任何其他类型的Linux,或者Mac OS X。
第一步是下载你的.tar.gz,然后用tar -zxvf file.tar.gz解压缩,然后进入文件夹。
打开一个显示服务器php.ini的网页。您正在寻找PHP API的版本和extension_dir。
在终端中,进入模块源代码文件夹,然后输入phpize。
如果你检查API版本,它们与你的php.ini不同,那么在终端中使用旧版本的php,你的模块将无法工作!在这种情况下,您需要使用正确的phpize。
键入which phpize
以找出违规文件的位置。 (我的是/ usr / bin / phpize)
我的PHP似乎在/ usr / local中,所以我尝试运行/usr/local/phpize
。 API匹配。那么我做了以下事情:
mv /usr/bin/phpize /usr/bin/phpize-old
ln -s /usr/local/bin/phpize /usr/bin/phpize
中途!我们需要为php-config
做同样的事情 mv /usr/bin/php-config /usr/bin/php-config-old
ln -s /usr/local/bin/php-config /usr/bin/php-config
现在你已经完成了这项工作,安装应该是微不足道的,并按照网络上的教程/教学页面的负载工作。
./configure
make
make install
最后编辑你的php.ini并添加'extension = memcached.so'(或你编译的任何模块),然后重新启动你的apache服务器!
编辑:你可能需要运行'phpize -clean',如果它仍在使用模块源文件夹中的旧东西进行编译
答案 1 :(得分:0)
下载支持PHP 7.X的最新SourceGuardian模块: https://www.sourceguardian.com/loaders/download.php