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

问题描述 投票:52回答:13

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

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

如何只输入php而不是MAC上的整个路径?我仔细检查过,我没有一个名为.profilebash_profile的文件

谢谢

PS:这是什么输出echo $ 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 macos shell path mamp
13个回答
3
投票

每次保存MAMP配置(PHP部分)时,它会将当前版本的PHP保存在~/.profile文件中,并为php,pear和pecl创建别名,以指向当前配置的版本。 (注意:您需要在MAMP中选中“在命令行上使此版本可用”选项)

但是,您需要刷新终端(打开另一个会话)才能刷新此文件。您也可以键入source ~/.profile手动更新别名。

如果要在PHP_VERSION变量中提取当前版本(如上所述)以供进一步使用,您可以执行以下操作:

export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`

然后你将获得当前版本的MAMP $ PHP_VERSION。

最后,如果你想在mamp上使用当前配置的版本运行你的php,你只需要在~/.bash_profile中添加以下内容:

export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`
export PHPRC="/Library/Application Support/appsolute/MAMP PRO/conf/" #point to your php.ini folder to use the same php settings
export PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH

现在,即使依赖/usr/bin/env php的脚本也会从Mamp配置中读取正确的版本。


1
投票

可能为时已晚,无法发表评论,但这是我在Mac OSX上为我的XAMPP安装设置php PATH时遇到的问题

  1. 使用可用的文本编辑器打开文件.bash_profile(在当前用户文件夹下找到)。
  2. 添加路径如下:

export PATH = / path / to / your / php / installation / bin:leave / rest / of / the stuff / untouched /:$ PATH

  1. 保存.bash_profile并重新启动Mac。

说明:当用户从“终端”启动程序时,终端/ Mac尝试在它知道的PATHS上运行搜索,希望找到程序,因此这里的技巧是让终端找到php,用户打算通过将其指向用户安装的某个bin文件夹中的用户PHP版本来实现。

为我工作:)

P.S我在新电脑周围仍然是一只迷失的羊;)


0
投票

这不是一个理想的解决方案,因为你必须管理两个ini文件,但是我设法通过将mamp中的php ini文件从conf文件夹复制到bin文件夹中的活动php版本来解决这个问题。

sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;

复制到

php5.6.10


0
投票

为了补充当前接受的答案,如果你假设MAMP使用最新版本的php5作为默认值,你可以在中间添加grep'php5':

[MAMP INSTALL]\conf\[ACTIVE PHP VERSION]\php.ini

无论MAMP版本如何,您都可以获得最新的php5。


0
投票

最新版本的MAMP(版本5+)提供了一种简单的方法,使MAMP PHP版本可用于命令行。只需在侧栏菜单中选择“PHP”,然后选中“在命令行中使此版本可用”。十分简单!见附件截图:)


128
投票

例如,在你的主文件夹qazxsw poi中,你可以创建一个qazxsw poi。在这里,您可以导出变量,然后将它们添加到您的路径中。

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

然后你可以添加你的路径

/Users/David

你希望你的位置优于.bash_profile,因为它已经包含了PHP系统所在的export MAMP_PHP=/Applications/MAMP/bin/php/php5.3.6/bin export PATH="$MAMP_PHP:$PATH" 。因此系统将始终首先找到您的MAMP版本。

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

为了测试我使用$PATH作为OSX Lion使用5.3.10而我的MAMP使用5.3.6 您还可以使用/usr/bin进行测试,它将输出当前php可执行文件的路径。


104
投票

以前接受的答案是指php 5.3.6这一事实,而当前版本的MAMP默认使用7.2.1(截至2018年初),指出这不是一个非常可持续的解决方案。您可以通过向php -v添加额外的行来自动更新路径,以便从which php获取最新版本的PHP并将其导出到您的路径。我是这样做的:

.bash_profile

(在进行更改后使用/Applications/MAMP/bin/php/以确保它们生效。)

正如其他人所提到的,你可能还想修改你的shell以使用位于# 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 的MAMP的mysql可执行文件。但是,我不建议导出该文件夹,因为那里有许多其他可执行文件,如source ~/.bash_profile,您可能不希望优先考虑系统安装的版本。这个问题阻止我最近安装一个节点包(libxmljs),如/Applications/MAMP/Library/bin所记录。

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

mysql

我使用函数而不是别名,因为别名不会传递给子进程,或者至少不会传递给shell脚本的上下文。我发现的唯一的缺点是运行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 将不再返回任何东西,这是一个无赖。如果你想检查使用哪个mysql并确保一切都是copacetic,请改用which mysql

注意:@julianromera指出zsh不支持导出函数,因此在这种情况下,最好使用别名,如which mysqladmin。请注意,您的别名可能无法从子shell中获取(例如执行shell脚本时)。


12
投票

我发现在Mavericks 10.8上没有.bash_profile,我的路径位于/ etc / paths

为了获得新路径(无论这是php的mamp还是brew安装)生效,它需要高于此路径文件中的默认/ usr / bin / php。例如。

mysql --version

在更改之后,打开一个新的终端窗口并运行现在应指向更新路径的“php”


8
投票

你可能仍然遇到以这种方式找不到的mysql二进制文件

alias mysql='/Applications/MAMP/Library/bin/mysql'

编辑如下,保存,完全重新启动终端或交替

/Applications/MAMP/bin/php/php5.3.6/bin
/usr/bin 

在不重启终端的情况下执行新的PATH

并且以上面DavidYell的帖子的方式,还添加以下内容。您可以通过导出它们来堆叠各种变量,然后是我在下面演示的单个PATH导出

open terminal, type
touch ~/.bash_profile; open ~/.bash_profile

干杯


3
投票

如果你必须打字

source ~/.bash_profile

在命令行中然后添加

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"

到你的PATH能够从任何地方调用PHP。


2
投票

这个对我有用:

/Applications/MAMP/bin/php5.3/bin/php

2
投票

对于XAMPP用户,您可以使用:

/Applications/MAMP/bin/php5.3/bin

你可以用以下方法检查:

sudo mv /usr/bin/php /usr/bin/~php
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php

1
投票

有时,这样做更容易:

# Use XAMPP version of PHP export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH source ~/.bash_profile

发布时Mamps版本的PHP是php -v ,因此请确保将其更改为您正在使用的版本。

你会快活的。

© www.soinside.com 2019 - 2024. All rights reserved.