如何覆盖PHP的path使用MAMPpath?
搞砸完全我的PHPconfiguration在MAC试图让SOAP模块工作(-bash:/ usr / bin / php:没有这样的文件或目录….)我现在必须使用MAMP,但每次我必须键入path
Applications/MAMP/bin/php5.3/bin/php to do command line.
如何只键入PHP而不是MAC上的整个path? 我加倍检查,我没有一个名为.profile
或bash_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
以前接受的答案指的是php 5.3.6,而当前版本的MAMP默认使用5.6.2(截至2015-05-01),指出这不是一个非常可持续的解决scheme。 您可以通过在.bash_profile
添加一行来从/Applications/MAMP/bin/php/
获取最新版本的PHP并将其导出到您的path,从而自动更新path。 以下是我如何做到这一点:
# Use MAMP version of PHP PHP_VERSION=`ls /Applications/MAMP/bin/php/ | sort -n | tail -1` export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
(进行更改后使用source ~/.bash_profile
,以确保其生效。)
正如其他人所提到的,您可能还想修改shell以使用位于/Applications/MAMP/Library/bin
MAMP的mysql可执行文件。 但是,我不build议导出该文件夹,因为那里有一堆其他的可执行文件,比如libtool
,你可能不希望在你的系统安装版本上给予优先权。 这个问题阻止了我最近安装一个节点包(libxmljs),如这里所述 。
我的解决scheme是定义和导出mysql
和mysqladmin
作为函数:
# 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
我使用函数而不是别名,因为别名不会传递给subprocess,或者至less不在shell脚本的上下文中传递。 我发现唯一的缺点是运行which mysql
和which mysqladmin
将不再返回任何东西,这是一个无赖。 如果你想查看哪个mysql正在使用,并确保一切都是同步的,请改用mysql --version
。
注意:@ julianromera指出zsh不支持导出函数,所以在这种情况下,最好使用别名,如alias mysql='/Applications/MAMP/Library/bin/mysql'
。 请注意,您的别名可能无法从子shell中获得(如执行shell脚本时)。
在您的主文件夹/Users/David
中,可以创build.bash_profile
。 在这里你可以导出variables,然后将它们添加到你的path。
用你最喜欢的编辑器打开文件进行编辑,我使用vim。
然后你可以添加你的path
export MAMP_PHP=/Applications/MAMP/bin/php/php5.3.6/bin export PATH="$MAMP_PHP:$PATH"
您希望您的$PATH
之前的位已经包含/usr/bin
,这是系统PHP所在的位置。 所以系统总是会首先find你的MAMP版本。
保存这个文件,然后重新启动你的terminal,你会看到你应该得到你的MAMP版本。
为了testing我使用php -v
因为OSX Lion使用5.3.10,我的MAMP使用的是5.3.6
您也可以testing使用which php
将输出path到您当前的PHP可执行文件。
我发现,在小牛10.8没有一个.bash_profile和我的path位于/ etc /path
为了有新的path(不pipe这是一个mamp还是brew的brew安装)生效,它需要在这个path文件中默认的/ usr / bin / php之上。 例如。
/Applications/MAMP/bin/php/php5.3.6/bin /usr/bin
在更改之后,打开一个新的terminal窗口并运行现在应该指向更新path的“哪个php”
你可能仍然遇到mysql二进制文件没有find那种方式
open terminal, type touch ~/.bash_profile; open ~/.bash_profile
编辑如下,保存,然后重新启动terminal或交替
source ~/.bash_profile
在不重新启动terminal的情况下执行新的PATH
并以DavidYell的post的方式,还添加以下内容。 您可以通过导出它们,然后单个PATH导出来堆叠各种variables,我将在下面进行演示
export MAMP_PHP=/Applications/MAMP/bin/php/php5.6.2/bin export MAMP_BINS=/Applications/MAMP/Library/bin export USERBINS=~/bins export PATH="$USERBINS:$MAMP_PHP:$MAMP_BINS:$PATH"
干杯
如果你必须input
/Applications/MAMP/bin/php5.3/bin/php
在你的命令行中,然后添加
/Applications/MAMP/bin/php5.3/bin
到您的PATH能够从任何地方调用PHP。
这个为我工作:
sudo mv /usr/bin/php /usr/bin/~php sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php
有时候,这样做更容易:
sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;
在发布的时候PHP的Mamps版本是php5.6.10
,所以确保你改变你使用的版本。
你会很兴奋的。
对于XAMPP用户,您可以使用这个:
# Use XAMPP version of PHP export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH source ~/.bash_profile
你可以检查它:
php -v
可能来不及发表评论,但这里是我遇到的问题,在Mac OSX上为我的XAMPP安装设置php PATH
- 使用可用的文本编辑器打开文件.bash_profile(在当前用户文件夹下find)。
- 添加path如下:
export PATH = / path / to / your / php / installation / bin : leave / rest / of / the stuff /不受影响/ :$ PATH
- 保存你的.bash_profile并重新启动你的Mac。
说明:当用户从“terminal”启动一个程序时,Terminal / Mac尝试在它所知道的PATHS上运行search,希望find程序,因此这里的诀窍是让terminalfindphp,用户希望通过将其指向用户安装的某个bin文件夹中的用户版本的PHP。
为我工作:)
PS我仍然是我的新电脑周围失去了羊;)
这是不是一个理想的解决scheme,因为你必须pipe理两个ini文件,但是,我设法解决这个问题在windows上通过复制php文件in mamp从conf文件夹到您的活动php版本在bin文件夹中。
[MAMP INSTALL]\conf\[ACTIVE PHP VERSION]\php.ini
复制到
[MAMP INSTALL]\bin\php\[ACTIVE PHP VERSION]
为了恭维当前接受的答案,如果你认为MAMP使用最新版本的php5作为默认,你可以在中间添加grep'php5':
PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1`
而且无论MAMP版本如何,您都可以获得最新的php5。