如何使用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
那么这一切都是一种魅力!