首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pecl为以前的php版本安装

pecl为以前的php版本安装
EN

Stack Overflow用户
提问于 2013-10-24 17:13:58
回答 4查看 33K关注 0票数 25

我把我的MacBook升级到了Mavericks,毁了我的开发环境。我现在遇到的问题是,我的pear/pecl仍然尝试安装我以前的(5.3)版本的PHP,而不是5.4版本。

PHP版本:

代码语言:javascript
复制
$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

代码语言:javascript
复制
$ pear version
PEAR Version: 1.9.4
PHP Version: 5.4.17
Zend Engine Version: 2.4.0
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

如果我将apc安装为

代码语言:javascript
复制
$ sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
...
Build process completed successfully
Installing '/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h'
Installing '/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so'
install ok: channel://pecl.php.net/APC-3.1.13
Extension apc enabled in php.ini

并在我的php.ini php -v中启用apc模块,更改为:

代码语言:javascript
复制
$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

因此pecl在/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626中安装了我的apc扩展,而php希望在/usr/lib/php/extensions/no-debug-non-zts-20100525/中安装它。

简单地创建符号链接会产生以下错误:

代码语言:javascript
复制
$ php -v
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
 in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

所以这不是一个解决方案。

有谁能告诉我正确的方向吗?我真的不知道这是怎么回事。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-25 03:52:25

解决方案非常简单。我不得不修改我的pecl配置。事实证明,这两个命令做到了这一点:

代码语言:javascript
复制
sudo pear config-set php_ini /etc/php.ini
sudo pecl config-set bin_dir /usr/bin/

pecl使用了错误的phpize。phpize有两个版本。对于我的php.ini文件也是如此。

票数 32
EN

Stack Overflow用户

发布于 2017-08-09 09:49:13

其他答案(到目前为止)似乎都没有解决拥有多个“可共同安装”的PHP版本的问题,同时又想为所有已安装的PHP版本构建一个给定的扩展。

为了说明我发现自己所处的场景(我在Ubuntu 16.04 LTS中使用Ondrej Sur«PHP PPAs ):

代码语言:javascript
复制
root@localhost:~# ls -lah /usr/bin/*php*
-rwxr-xr-x  1 root   root     11K Apr 19 12:50 dh_php
-rwxr-xr-x  1 root   root    3.1K Apr  5  2016 dh_phpcomposer
-rwxr-xr-x  1 root   root    5.4K Apr  5  2016 dh_phppear
lrwxrwxrwx  1 root   root      21 Jul 24 00:44 php -> /etc/alternatives/php
-rwxr-xr-x  1 root   root    4.3M Jul  6 10:04 php5.6
-rwxr-xr-x  1 root   root    4.3M Jul  6 10:04 php7.0
-rwxr-xr-x  1 root   root    4.4M Aug  4 14:22 php7.1
lrwxrwxrwx  1 root   root      28 Jul 24 00:44 php-config -> /etc/alternatives/php-config
-rwxr-xr-x  1 root   root    4.3K Jul  6 10:03 php-config5.6
-rwxr-xr-x  1 root   root    4.1K Jul  6 10:03 php-config7.0
-rwxr-xr-x  1 root   root    4.1K Aug  4 14:21 php-config7.1
lrwxrwxrwx  1 root   root      24 Jul 24 00:44 phpize -> /etc/alternatives/phpize
-rwxr-xr-x  1 root   root    4.7K Jul  6 10:03 phpize5.6
-rwxr-xr-x  1 root   root    4.6K Jul  6 10:03 phpize7.0
-rwxr-xr-x  1 root   root    4.6K Aug  4 14:21 phpize7.1

pecl install extension-name可以在PHP7.1中完成这项工作,但不适用于其他版本。

其他人指出,虽然卸载/重新安装php*-dev是可能的,但考虑到系统上故意安装的PHP版本,我更不希望这样做。

一种解决方案是为系统上存在的每个版本构建扩展。

这段代码演示了如何使用PHP5.6进行构建,但我在7.0和7.1中也做了同样的工作,而且步骤也是相同的。

此示例演示了从Git存储库克隆扩展,但用户可以使用任何源目录。

(#表示您必须是根用户或使用sudo)

代码语言:javascript
复制
# apt-get install php-dev

# cd ~

# git clone https://github.com/vendor/extension-name

# cd ./extension-name

# phpize5.6

# ./configure --with-php-config=/usr/bin/php-config5.6

# make clean

# make

# make install

# ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini

# service php5.6-fpm reload
票数 7
EN

Stack Overflow用户

发布于 2016-10-27 17:47:59

最好重新安装phpize扩展,因为它将被PECL使用,而不是进行黑客攻击。

执行下一步(php 5.5 => php 5.6示例):

代码语言:javascript
复制
sudo apt-get remove php5-dev
sudo apt-get install php5.6-dev 

(您可以将5.6更改为您需要的版本)

然后:

代码语言:javascript
复制
sudo pecl install extensionname
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19561722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档