如何覆盖PHP的路径来使用MAMP路径?

2022-08-30 09:37:59

在MAC上完全搞砸了我的PHP配置之后,试图让SOAP模块工作(-bash:/usr/bin/php:没有这样的文件或目录....)我现在必须使用MAMP,但每次我必须键入路径

Applications/MAMP/bin/php5.3/bin/php to do command line.

如何在MAC上键入php而不是整个路径?我仔细检查了一下,我没有一个名为 nor 的文件.profilebash_profile

谢谢

PS:这是输出回声$PATH:

echo $PATH
/Applications/MAMP/Library/bin/:/Applications/MAMP/bin/php5/bin/:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

答案 1

在个人文件夹中,您可以创建一个 .在这里,您可以导出变量,然后将其添加到路径中。/Users/David.bash_profile

打开文件在您喜欢的编辑器中编辑它,我使用vim。

然后,您可以添加您的路径

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

你希望你的位在前面,因为那已经包括了哪个是系统PHP所在的位置。因此,系统将始终首先找到您的 MAMP 版本。$PATH/usr/bin

保存此文件,然后重新启动终端,您将看到您应该获得MAMP版本。

为了测试我使用OSX Lion使用5.3.10,我的MAMP使用5.3.6
,您也可以使用哪个将输出路径到当前php可执行文件的路径进行测试。php -vwhich php


答案 2

事实上,之前接受的答案指的是php 5.3.6,而当前版本的MAMP默认为7.2.1(截至2018年初),这一事实表明这不是一个非常可持续的解决方案。您可以通过向路径添加额外的行来自动更新路径,或者从中获取最新版本的 PHP 并将其导出到路径。我是这样做的:.bash_profile.zshrc/Applications/MAMP/bin/php/

# Use MAMP version of PHP
PHP_VERSION=`command ls /Applications/MAMP/bin/php/ | sort -n | tail -1`
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH

(在进行更改后使用,以确保它们生效。source ~/.bash_profile

正如其他人所提到的,您可能还想修改您的shell以使用MAMP的mysql可执行文件,该可执行文件位于.但是,我不建议导出该文件夹,因为那里还有许多其他可执行文件,例如,您可能不希望优先于系统安装的版本。此问题使我最近无法安装节点包 (libxmljs),如此所述。/Applications/MAMP/Library/binlibtool

我的解决方案是定义和导出以及作为函数:mysqlmysqladmin

# Export MAMP MySQL executables as functions
# Makes them usable from within shell scripts (unlike an alias)
mysql() {
    /Applications/MAMP/Library/bin/mysql "$@"
}
mysqladmin() {
    /Applications/MAMP/Library/bin/mysqladmin "$@"
}
export -f mysql
export -f mysqladmin

我使用函数而不是别名,因为别名不会传递给子进程,或者至少不会在shell脚本的上下文中传递。我发现的唯一缺点是运行并且不会再返回任何东西,这很糟糕。如果你想检查正在使用哪个mysql并确保一切都是共处理的,请改用。which mysqlwhich mysqladminmysql --version

注意:@julianromera指出zsh不支持导出函数,因此在这种情况下,最好使用别名,例如.请注意,您的别名可能无法从子shell中使用(例如在执行shell脚本时)。alias mysql='/Applications/MAMP/Library/bin/mysql'


推荐