Macports 开关 PHP CLI 版本
Macports switch PHP CLI version
我正在尝试将我的终端 PHP 版本切换到 5.4,因为我 运行 在更新我的 Drupal 核心时遇到了 Drush 的一些问题。 https://drupal.stackexchange.com/questions/112090/drush-command-errors
出现这些问题的原因是我的终端 PHP 版本与我的本地主机不同。
php -v
在终端 returns PHP 5.5.13 (cli)
但我的本地主机是 运行 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
但是,在执行此操作并重新启动 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 php
和 which php
时也总是得到相同的结果,即使在符号链接之后也是如此。
whereis php
returns/usr/bin/php
和which php
returns/opt/local/bin/php
本地主机:
#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
非常感谢任何帮助。
不要修改 /usr/bin
中的文件。那是 Apple 的地盘,总是有其他的可能性可以避免更改那里的东西,特别是因为 Apple 的下一次更新将愉快地再次恢复这些更改 和 脚本可能依赖于 /usr/bin/php
OS 附带的 Apple 版本。将原始二进制文件放回原处。
此外,正如您所注意到的,which php
(或 type php
,这通常更准确,因为它包括 Shell 别名)返回 /opt/local/bin/php
,它告诉当您在 shell 上键入 php
时,您会执行哪个 php
二进制文件(或符号链接)。因为那是 /opt/local/bin/php
,这就是你需要改变的。
MacPorts 具有允许您调整这些首选版本的机制。您应该使用它来手动将内容链接到位置,因为除了标准的 PHP 二进制文件之外,它还会对相关内容进行符号链接,例如 php-config
、phpize
及其相应的联机帮助页。这种机制称为 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
二进制文件位置上的所有缓存。
我正在尝试将我的终端 PHP 版本切换到 5.4,因为我 运行 在更新我的 Drupal 核心时遇到了 Drush 的一些问题。 https://drupal.stackexchange.com/questions/112090/drush-command-errors
出现这些问题的原因是我的终端 PHP 版本与我的本地主机不同。
php -v
在终端 returns PHP 5.5.13 (cli)
但我的本地主机是 运行 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
但是,在执行此操作并重新启动 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 php
和 which php
时也总是得到相同的结果,即使在符号链接之后也是如此。
whereis php
returns/usr/bin/php
和which php
returns/opt/local/bin/php
本地主机:
#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
非常感谢任何帮助。
不要修改 /usr/bin
中的文件。那是 Apple 的地盘,总是有其他的可能性可以避免更改那里的东西,特别是因为 Apple 的下一次更新将愉快地再次恢复这些更改 和 脚本可能依赖于 /usr/bin/php
OS 附带的 Apple 版本。将原始二进制文件放回原处。
此外,正如您所注意到的,which php
(或 type php
,这通常更准确,因为它包括 Shell 别名)返回 /opt/local/bin/php
,它告诉当您在 shell 上键入 php
时,您会执行哪个 php
二进制文件(或符号链接)。因为那是 /opt/local/bin/php
,这就是你需要改变的。
MacPorts 具有允许您调整这些首选版本的机制。您应该使用它来手动将内容链接到位置,因为除了标准的 PHP 二进制文件之外,它还会对相关内容进行符号链接,例如 php-config
、phpize
及其相应的联机帮助页。这种机制称为 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
二进制文件位置上的所有缓存。