pecl安装以前的php版本

Ren*_*gen 20 php pear apc pecl osx-mavericks

我已将MacBook升级为Mavericks并破坏了我的开发环境.我现在遇到的问题是我的pear/pecl仍然尝试安装我之前的(5.3)版本的PHP而不是5.4版本.

PHP版本:

$ 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
Run Code Online (Sandbox Code Playgroud)

$ 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
Run Code Online (Sandbox Code Playgroud)

如果我安装apc

$ 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
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

所以pecl安装我的apc扩展/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626,php期望它/usr/lib/php/extensions/no-debug-non-zts-20100525/.

只需制作符号链接就会出现以下错误:

$ 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
Run Code Online (Sandbox Code Playgroud)

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

任何人都能指出我正确的方向吗?我真的不知道这里发生了什么.

Lay*_*yke 31

就我而言,我试图安装Gearman.

pecl install gearman会错误地安装它.

php -i 会显示:

PHP Extension => 20100525
Run Code Online (Sandbox Code Playgroud)

然而pecl将安装使用:

PHP Api Version:         20090626
Run Code Online (Sandbox Code Playgroud)

更改我的配置设置后使用:

第一次修复

sudo pecl config-set php_ini /etc/php.ini
sudo pecl config-set php_bin /usr/bin/php5
Run Code Online (Sandbox Code Playgroud)

我注意到我仍然会得到

警告:php_bin/usr/bin/php5似乎有一个后缀5,但配置变量php_suffix不匹配

您可以使用配置设置解决此问题:

额外修复

sudo pear config-set php_suffix 5
Run Code Online (Sandbox Code Playgroud)

为什么这是一个问题?

对我来说,我遇到了这个问题,因为我添加了一个自定义PPA并重新安装了PHP.这意味着我之前安装的php5-dev不同步.

如果你遇到同样的情况,你可能只想运行..

apt-get remove php5-dev
pecl uninstall <extensionname>
apt-get install php5-dev
apt-get remove php5-pear
apt-get install php5-pear
pecl install <extensionname>
Run Code Online (Sandbox Code Playgroud)

或者,您可以下载源代码并运行phpize.


Ren*_*gen 29

解决方案非常简单.我不得不修改我的pecl配置.事实证明,这两个命令起了作用:

sudo pear config-set php_ini /etc/php.ini
sudo pecl config-set bin_dir /usr/bin/
Run Code Online (Sandbox Code Playgroud)

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

  • 天啊,谢谢你.我一直在争论这个问题12个小时,并且无法弄清楚为什么pecl不会为PHP 5.5构建.运行这两个命令修复它.你真的救了我的屁股. (2认同)

Kor*_*las 6

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

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

sudo apt-get remove php5-dev
sudo apt-get install php5.6-dev 
Run Code Online (Sandbox Code Playgroud)

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

然后:

sudo pecl install extensionname
Run Code Online (Sandbox Code Playgroud)


Ben*_*son 5

到目前为止,还没有其他答案想解决具有多个“可共同安装”的PHP版本,而又想为所有已安装的PHP版本构建给定的扩展名。

为了说明我发现自己的情况(我正在为Ubuntu 16.04 LTS使用OndrejSurýPHP PPA):

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
Run Code Online (Sandbox Code Playgroud)

pecl install extension-name 可以为PHP 7.1完成这项工作,但其他人则不能。

其他提示指出,尽管可以卸载/重新安装php*-dev,但鉴于系统上有意的,共同安装的PHP版本,我宁愿不这样做。

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

此代码段演示了如何使用PHP 5.6进行构建,但是我对7.0和7.1进行了相同的操作,并且步骤相同。

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

#表明您必须是root或使用sudo

# 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
Run Code Online (Sandbox Code Playgroud)


Tob*_* G. 5

有一种方法可以在 Ubuntu 上切换 PHP 版本:

sudo update-alternatives --set php /usr/bin/php5.6
Run Code Online (Sandbox Code Playgroud)

和可选:

sudo update-alternatives --set phar /usr/bin/phar5.6
sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
sudo update-alternatives --set phpize /usr/bin/phpize5.6
sudo update-alternatives --set php-config /usr/bin/php-config5.6
Run Code Online (Sandbox Code Playgroud)

来源:https : //superuser.com/a/1100911/371795