【问题标题】:Multiple PHP versions using phpenv, php-build and php-version使用 phpenv、php-build 和 php-version 的多个 PHP 版本
【发布时间】:2013-08-06 02:51:30
【问题描述】:

我在 Arch Linux 上,尝试配置多个 PHP 版本来测试我的脚本。

我基于这三个工具:

首先我使用pacman 安装了 Apache 和 PHP(以及它们的集成包):

# pacman -S php apache php-apache

接下来,我按照链接上的说明安装工具,一切正常。

我设法使用来自php-build 工具的phpenv-install 安装了两个版本。我得到了这样的东西:

-- ~
|---.phpenv
  |---lib
  |---versions
    |---5.5.1
    |---5.4.17
  |--- (some more folders)

在 CLI 环境下一切正常,我可以使用 php-version 在两个版本之间轻松切换:

$ php-version 5.5.1
$ php --version
PHP 5.5.1 (cli) (built: Aug  5 2013 22:54:47) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

$ php-version 5.4.17
$ php --version
PHP 5.4.17 (cli) (built: Aug  5 2013 23:19:44) 
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

现在的问题是:将它与 apache 集成。

正如我在本文开头所说,我还必须从 Arch 存储库安装 PHP,巧合的是,它的版本是 5.4.17。此安装适用于 Apache。

php-env自述文件中有这些说明:

phpenv 支持 Apache apxs 库的动态切换和安装 将为 Apache 构建和安装一个 libphp5.so 共享库 版本 libexec 文件夹。

通过调用 phpenv global 来显示或更改全局 PHP 版本 在 ~/.phpenv/lib/libphp5.so 下为适当的链接创建链接 发布构建。此链接可用于 Apache 的 LoadModule php5_module 指令并在更改时要求 Apache 重新启动。

问题是在lib 目录中没有名为libphp5.so 的文件或符号链接,在整个.phpenv 文件夹中也没有,因为

$ find ~/.phpenv -name libphp5.so

什么都不返回。

也许因为英语不是我的第一语言,我在解释上面引用的第二段时遇到了一些问题。

【问题讨论】:

  • 很抱歉,您的问题尚未得到解答。有什么进展可以分享吗?
  • 我最终放弃了在 Arch 上安装它。在基于 debian 的发行版上,可以使用 phpbrew (github.com/c9s/phpbrew),它不会按照我最初的意图进行,但可以正常工作。基本上,使用它我可以编译各种版本的libphp5.so,将其命名为libphp551.solibphp5417.so,并使用命令行工具在版本之间切换。我想要的是将版本与特定端口或类似的东西相关联。
  • 好的,不是我希望的,但感谢您提供的信息!
  • locate libphp5.so 的输出是什么?另外,~/.phpenv 及其子文件夹中有什么有趣的吗?

标签: php linux apache


【解决方案1】:

AUR 中有一个用于 phpenv 的包 https://aur.archlinux.org/packages/phpenv/

以及许多不同版本的 PHP 的包 https://aur.archlinux.org/packages/?O=0&C=0&SeB=nd&K=phpenv&outdated=&SB=n&SO=a&PP=50&do_Search=Go

首先安装phpenv: yaourt phpenv

然后安装你需要的php版本,例如: yaourt php53_29_env

注意:即使这样,您也可能会遇到问题。检查包构建,当apache运行线程安全的mpm时,它似乎缺少禁用PHP自动编译线程安全功能的补丁。不太确定,因为在我的系统上,我希望 PHP 启用线程安全代码,以便它对我有用。

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2019-05-11
    • 2013-02-21
    • 1970-01-01
    • 2016-06-11
    • 2019-10-01
    相关资源
    最近更新 更多