我一直使用 Ubuntu 的官方存储库来安装 PHP,但在使用 rbenv 和 rubybuild 等工具安装 Ruby 后,我想知道是否存在更好的工具/技术来安装 PHP。特别是,我希望能够精确控制要安装的 PHP 版本,而不是只获取 Canonical 为我提供的任何版本。
能够同时安装多个版本并在它们之间无缝切换也很酷。
答案1
也许您想要这个,但作为一个精通 PHP 和 Ruby 编程的人,我可以说 Ruby 拥有版本控制系统的主要原因就是在更改版本时会出很多问题、失败或中断。PHP 对过时的方法和函数的宽容度和理解度要高得多。
例如,如果您从 PHP 5.1.6 跳转到 PHP 5.4,那么在无法快速修复的版本中,发生故障的情况相对较少。这意味着如果确实发生故障,可以从 PHP 错误中相当清楚地推断出出了什么问题。而且 PHP 比 Ruby 具有更强的向后兼容性。
也就是说,您始终可以手动安装多个版本的 PHP 模块,然后只需调整 Apache 配置,重新启动 Apache 即可。例如,我有一个客户端,它有只能与 PHP 5.1.6 一起使用的旧代码。因此,我在 Ubuntu 11.04(然后是 11.10 以及 12.04)上从源代码编译了它,但确保将模块命名为如下名称:
/usr/lib/apache2/modules/libphp516.so
通常安装的 PHP 模块名称如下:
/usr/lib/apache2/modules/libphp5.so
因此,通过包含版本号的命名libphp516.so
,我可以拥有多个版本的 PHP。
完成后,要切换版本,我所需要做的就是编辑php5.load
位于此处的内容:
sudo nano /etc/apache2/mods-available/php5.load
因此它包含如下行:
# LoadModule php5_module /usr/lib/apache2/modules/libphp.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516.so
注释掉的第一行指的是通过apt-get
/安装的 PHP 版本aptitude
。下面的一行告诉 Apache 加载libphp516.so
模块。重新启动 Apache,现在 PHP 5.1.6 可以正常工作了。
但我知道有系统可以以更无缝/更高级的方式管理这一点。正如我一开始所说的,除了像我这样被迫这样做的人之外,我不知道有多少人会需要这样的工具,因为在处理遗留代码方面,PHP 比 Ruby 更具可扩展性和可敬性。两种不同的编码理念在起作用。