我想使用 MAMP 的 PHP 版本,而不是我的 mac 上安装的默认版本。我尝试使用
ln -s /Applications/MAMP/bin/php5.3/bin/php php
但我收到“文件存在”错误。解决此问题的最佳方法是什么,以便我可以输入 php 而不是完整路径?
我在原始 php 位置创建了一个符号链接。
1. 使用以下命令找到您的 osx php 版本:
which php
结果应该是:
/opt/local/bin/php
2. 备份(移动)你原来的 php 二进制文件:
sudo mv /opt/local/bin/php /opt/local/bin/php.bak
3. 创建符号链接:
sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
4. 运行新的 php 版本:
php -v
PS:
为了让它在 El-Capitan 上工作
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
csrutil enable
我不建议尝试修改在命令行上调用的 PHP 的默认版本。如果您决定升级操作系统,这样做可能会破坏系统的其他部分,并在将来给您带来问题。
有一个替代方案可以满足您的需求。您可以为您的 MAMP 的 php 5.3 副本创建一个别名。在我的例子中,我将别名命名为 phpmamp。打开你的终端并输入:
alias phpmamp='/Applications/MAMP/bin/php5.3/bin/php'
现在,在命令行输入 phpmamp 将启动 MAMP php interperter。通过键入以下内容进行验证:
phpmamp --help
您很可能希望将此以及任何其他别名存储在 a~/.bash_profile
这将允许别名在重新启动后保持不变。否则,别名应仅适用于您所在的特定终端会话。有关创建.bash_profile
文件的更多信息,请参见此处:
http://www.redfinsolutions.com/redfin-blog/creating-bashprofile-your-mac
我不想篡改当前文件,所以我只是将 MAMP PHP bin 文件夹添加到$PATH
env 变量中。
您可以编辑~/.bash_profile
以下行并将其添加到顶部
export PATH="/Applications/MAMP/bin/php/php5.6.1/bin:$PATH"
只需将 PHP 版本更改为您正在使用的当前版本。
source ~/.bash_profile
编辑文件后不要忘记做。
到目前为止,我对我在网上找到的结果/解决方案并不满意,因为 php.ini 配置在所有情况下和所有系统上都没有正确加载,尤其是当你需要像 ioncube 和其他模块时(它是在 MAMP Pro 上更令人困惑)。这就是为什么我创建了自己的 php 版本别名(带有配置),所以我想出了以下解决方案,例如(基于 MAMP Pro,请记住根据您的需要调整 php.ini 路径):
编辑您的 .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'"
重新初始化当前终端会话中的 .bash_profile (否则您将看不到任何更改,除非您重新启动终端):
source ~/.bash_profile
如果你安装了一些额外的模块,那么你可以用 php56 -v 测试它,你应该得到 ioncube 等模块的输出。否则用 php56 -i | 测试它 grep "yourModuleNameOrSomethingElse"
现在,您可以在终端中轻松使用其中一个 php 版本,如“php56”,并加载所有配置。因此,它非常适合通过所有版本的迭代测试和构建您的应用程序,包括通过终端进行正确的 php.ini 配置。
对于普通的 MAMP 用户,我认为配置应该位于 /Applications/MAMP/conf/ 中。快乐编程。
2021 - 对于那些使用ohmyzsh的人,要编辑的文件是:
/Users/your_user/.zshrc
因此,您可以编辑此文件并添加路径:
export PATH=/Applications/MAMP/bin/php/php8.0.0/bin:$PATH
与 Big Sur 完美搭配
如果您的终端使用的是 zsh (oh-my-zosh),如附件所示。 检查图像 执行以下操作。
Mac Big Sur 使用“zsh”Oh-my-zosh 作为终端。所以,我做了以下事情。
如果您需要帮助,请告诉我。
适用于 Mac OS Catalina。查找目录/Users/<user_name>/.zprofile
并添加(例如)
# MAMP PRO PHP
export PATH="/Applications/MAMP/bin/php/php7.4.2/bin:$PATH"
重启后,在终端
which php
新的php版本/Applications/MAMP/bin/php/php7.4.2/bin/php
好吧,“文件存在”错误可能是因为您尝试使用已经存在的文件名创建符号链接。我假设您在包含您尝试替换的 php 版本的目录中,或者这是第二次尝试并且您没有首先删除现有的符号链接。我同意其他人关于不“替换/修改”默认版本的 php.ini 的观点。
基于问题的第二部分,最好的方法是避免输入完整路径,建议别名的答案是正确的。但是,当涉及多个版本时,这意味着必须调用 php 以外的东西来运行您想要运行的版本。
我有一个脚本,可以让我“选择”我想要使用的 php 版本,然后创建一个指向该版本的符号链接,并让我在想要使用它时简单地输入“php”作为我的命令。我在这里写了一篇关于它的博客,您可以在其中获取脚本。根据@ioCron 给出的答案,我可能需要重新访问我的脚本以说明与每个版本关联的不同配置文件夹。
好吧,这些都不适用于 OSX10.12.5
我在 /opt/local/bin 安装了 mac 端口 php70
哪个php显示:
/usr/bin/php
我设置了别名和本地路径等,这主要对我有用,但其他程序都失败了(比如作曲家),所以我的解决方案是预先添加:
/opt/local/bin
/opt/local/sbin
到文件 /etc/paths
然后这一切都产生了魅力!
最新版本的 MAMP(版本 5+)提供了一种使 MAMP PHP 版本可用于命令行的简单方法。只需在侧栏菜单中选择“PHP”并选中“使此版本在命令行上可用”。十分简单!:)