Macports切换PHP CLI版本

时间:2015-06-22 19:23:25

标签: php bash drupal terminal macports

我试图将我的终端PHP版本切换到5.4,因为我在更新Drupal核心时遇到了Drush的一些问题。 https://drupal.stackexchange.com/questions/112090/drush-command-errors

这些问题的原因是我的终端PHP版本与我的localhost不同。 终端中的php -v返回PHP 5.5.13 (cli)但我的localhost正在运行PHP Version 5.4.29

我开始搜索如何将CLI版本切换到5.4并找到:

sudo rm /usr/bin/php // remove /usr/bin/php first
sudo ln -s /opt/local/bin/php54 /usr/bin/php // pointing to php54
php -v // get version
PHP 5.4.9 (cli) (built: Nov 26 2012 12:40:37) 
Copyright (c) 1997-2012 The PHP Group

Source

然而,在这样做之后,重新启动Apache和终端,我仍然得到了 PHP 5.5.13 (cli)之后的php -v

为了确保我在正确的文件夹中工作,我检查了php文件是否在运行sudo rm /usr/bin/php后被删除了,而且确实是这样。

因此,作为测试,我执行了此操作:/opt/local/bin/php54 -v并获得了PHP 5.4.29 (cli)。这让我觉得我的符号链接不起作用,或者我做错了什么。

旁注:

运行sudo rm /usr/bin/php后我预计php -v会在终端中出错,但仍会给我PHP 5.5.13 (cli)

即使在符号链接之后,我也会在运行whereis phpwhich php时获得相同的结果。

whereis php返回/usr/bin/phpwhich php返回/opt/local/bin/php

Localhost:

#LoadModule php5_module        modules/mod_php55.so
LoadModule php5_module        modules/mod_php54.so
#LoadModule php5_module        modules/mod_php53.so
#LoadModule php5_module        modules/libphp5.so

#Include conf/extra/mod_php55.conf
Include conf/extra/mod_php54.conf
#Include conf/extra/mod_php53.conf
#Include conf/extra/mod_php.conf

Bash个人资料:

# MacPorts Installer addition on 2012-10-23_at_13:41:14: adding an appropriate PATH $
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
# also include mysql binaries
export PATH=$PATH:/opt/local/lib/mysql5/bin

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

请勿修改/usr/bin中的文件。这就是Apple的地盘,并且总有其他可能性来避免改变那里的事情,特别是因为Apple的下一次更新将很高兴再次恢复这些变化脚本可能依赖/usr/bin/php上正好是Apple随操作系统附带的版本。将原始二进制文件放回其所属的位置。

另外,正如您所注意到的,which php(或type php,通常更准确,因为它包含Shell别名的内容)返回/opt/local/bin/php,它会告诉您php在shell上键入php时,会执行二进制(或符号链接)。从那以后/opt/local/bin/php,这就是你需要改变的东西。

MacPorts有一种机制,允许您调整这些首选版本。您应该通过手工将符号链接到位置来使用它,因为除了标准的PHP二进制文件之外,它还会符号链接相关的内容,例如php-configphpize及其相应的联机帮助页。此机制称为port select

要列出可供选择的PHP版本,请运行port select --list php。要选择首选版本,请运行sudo port select --set php $versionIdentifier。对于PHP 5.4的用例,这可能是sudo port select --set php php54

请记住在此命令后运行hash -r以刷新shell可能在php二进制文件的位置上的任何缓存。