如何使用MAMP的PHP版本而不是OSX上的默认版本

我想使用MAMP的PHP版本,而不是我的Mac上安装的默认值。 我试过使用

ln -s /Applications/MAMP/bin/php5.3/bin/php php

但我得到一个“文件存在”的错误。 什么是解决这个问题的最好方法,所以我可以只键入PHP而不是完整的path?

我不build议尝试修改在命令行中调用的PHP的默认版本。 否则可能会破坏系统的其他部分,并在将来决定升级操作系统时为您提供问题。

有一个替代scheme可以满足您的需求。 你可以为MAMP的php 5.3创build一个别名。 在我的情况下,我命名别名phpmamp。 打开你的terminal并键入:

 alias phpmamp='/Applications/MAMP/bin/php5.3/bin/php' 

现在,在命令行键入phpmamp将启动MAMP php interperter。 input以下内容validation

 phpmamp --help 

你很可能想把这个和其他别名存储在~/.bash_profile这将允许别名在重启之后保持。 否则,别名应该只保留在特定的terminal会话中。关于创build.bash_profile文件的更多信息可以在这里find:

http://www.redfinsolutions.com/redfin-blog/creating-bashprofile-your-mac

我在原始的php位置创build了一个符号链接。

1.find你的osx php版本:

 which php 

结果应该是:

 /opt/local/bin/php 

2.备份(移动)你的原始php二进制文件:

 sudo mv /opt/local/bin/php /opt/local/bin/php.bak 

3.创build符号链接:

 sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php 

4.运行你的新的PHP版本:

 php -v 

PS:

为了这个工作在El Capitan

  • 将Mac重新启动到RecoveryMode(启动时按住Cmd + R)
  • 打开terminal并input: csrutil disable
  • 重启
  • sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
    或者sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /usr/bin/php
  • 再次重新启动到RecoveryMode并重新启用安全性: csrutil enable

我不想篡改当前文件,所以我只是将MAMP PHP bin文件夹放在$PATH envvariables中。

您可以编辑~/.bash_profile并将以下行添加到顶部

export PATH="/Applications/MAMP/bin/php/php5.6.1/bin:$PATH"

只需将PHP版本更改为当前使用的版本。

编辑完文件后,不要忘记做source ~/.bash_profile

到目前为止,我对networking上find的结果/解决scheme感到不满意,因为php.iniconfiguration在所有情况下和所有系统上都没有正确加载,尤其是当您需要像ioncube和其他模块(它是在MAMP Pro上更令人困惑)。 这就是为什么我创build了自己的PHP版本别名(带有configuration),所以我想出了以下解决scheme,例如(基于MAMP Pro,请记住根据您的需要调整php.inipath):

编辑你的.bash_profile

 vim ~/.bash_profile 

并添加以下条目:

 alias php55="/Applications/MAMP/bin/php/php5.5.26/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.5.26.ini'" alias php56="/Applications/MAMP/bin/php/php5.6.10/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'" alias php56cgi="/Applications/MAMP/bin/php/php5.6.10/bin/php-cgi -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'" 

在当前terminal会话中重新初始化.bash_profile(否则除非重新启动terminal,否则不会看到任何更改):

 source ~/.bash_profile 

如果你已经安装了一些额外的模块,那么你可以使用php56 -v来testing它,并且你应该得到一个ioncube等模块的输出。 否则用php56 -i |进行testing grep“yourModuleNameOrSomethingElse”

现在,您可以在terminal中轻松使用php版本之一,例如“php56”,并加载所有configuration。 因此,它非常适合通过所有迭代版本testing和构build应用程序,包括通过terminal进行正确的php.iniconfiguration。

对于正常的MAMP用户,configuration应该位于/ Applications / MAMP / conf /我想。 开心编程。

那么,“文件存在”错误可能是因为你试图创build一个与已经存在的文件的名称的sym-link。 我假设你在包含您试图replace的PHP版本的目录中,或者这是第二次尝试,并且您没有先删除现有的sym-link。 我同意其他人关于不“replace/修改”默认版本的PHP。

根据问题的第二部分,避开必须input完整path的最佳方法是,提供别名的答案是正确的。 当涉及到多个版本时,这意味着必须调用除php之外的其他东西才能运行要运行的版本。

我有一个脚本,可以让我“select”我想要使用的php版本,然后创build一个到该版本的sym-link,当我想使用它时,只需input“php”作为我的命令。 我在这里写了一个关于它的博客,你可以从中获得脚本。 基于@ioCron给出的答案,我可能需要重新访问我的脚本,以考虑与每个版本关联的不同configuration文件夹。

那么没有一个是OSX10.12.5为我工作

我有安装在/ opt / local / bin的mac ports php70

哪个php显示:

 /usr/bin/php 

我设置了别名和本地path等,这些主要为我工作,但其他程序失败(如composer php),所以我的解决scheme是prepend:

 /opt/local/bin /opt/local/sbin 

到文件/ etc /path

那么这一切都是一种魅力!