我在 Mac 10.9 计算机上安装了 PHP 5.4 版本,并想升级到 5.6。
我下载了源文件并运行了./configure
,make
和make install
.我看了看,它似乎已经编译并安装成功,但它自己安装到了/usr/local/bin
.旧版本的 PHP 安装在/usr/bin
.
当我运行时php
,/usr/bin
会使用该位置,因为它/usr/bin
位于.我想使用新版本。/usr/local/bin
$PATH
我应该/usr/bin
用 中的版本替换旧版本的 PHP/usr/local/bin
吗?或者我应该将它们完全删除/usr/bin
?
这有点棘手,因为 5.6 安装还安装了一些其他东西,例如新版本的perl
和pecl
以及其他几个帮助程序二进制文件(包括php-config
和phpize
)。其中一些(最后两个)已经存在于/usr/bin
文件夹中,但perl
并不pecl
存在。我应该把所有新东西都移到 吗/usr/bin
?
最后,为什么新的可以安装,/usr/local/bin
而旧的却不能呢?区别重要吗? PHP 团队是否出于某种原因决定移动它?或者只是/usr/bin
因为它是我的系统附带的,而下载的更新被放入了/usr/local/bin
?
的位置php.ini
取决于这些吗?
答案1
一般来说,/usr
层次结构用于来自操作系统供应商/站点管理员的内容,而/usr/local
用于本地安装的内容(例如在网络上,/usr
可能是由多台计算机共享的 NFS 安装,而/usr/local
本地文件系统)。这就是为什么配置脚本通常/usr/local
默认安装到 - 以免破坏系统包。这也是原因,为什么PATH
应该有/usr/local/{bin,sbin}
前 /usr/{bin,sbin}
。
要更改它,您需要做的就是运行(对于表现良好的构建系统):
./configure --prefix=/path/to/install/to
这很大程度上取决于旧 PHP 版本的来源是什么。仅仅覆盖它不是一个好主意,因为它可能会留下旧版本中的一些文件(这就是为什么使用包管理器是一个好主意TM)。因此,除非您有一种干净的方式来卸载以前的版本,否则/usr/local
可能会稍微好一些。另一种选择是(错误)使用单独的层次结构/opt
- 例如安装到/opt/php5.6
.