【问题标题】:How to override the path of PHP to use the MAMP path?如何覆盖 PHP 的路径以使用 MAMP 路径?
【发布时间】:2011-05-07 22:28:30
【问题描述】:

在完全搞砸了我在 MAC 上的 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


    【解决方案1】:

    先前接受的答案是指 php 5.3.6,而当前版本的 MAMP 附带 7.2.1 作为默认值(截至 2018 年初),这一事实指出这不是一个非常可持续的解决方案。您可以通过在 .bash_profile.zshrc 中添加额外的行来自动更新路径,以从 /Applications/MAMP/bin/php/ 获取最新版本的 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 可执行文件,该可执行文件位于 /Applications/MAMP/Library/bin。但是,我确实建议导出该文件夹,因为那里有许多其他可执行文件,例如libtool,您可能不想优先于系统安装的版本。这个问题阻止了我最近安装节点包(libxmljs),如文件here 所述。

    我的解决方案是将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 脚本的上下文中传递。我发现的唯一缺点是运行 which mysqlwhich mysqladmin 将不再返回任何内容,这真是太糟糕了。如果您想检查正在使用的 mysql 并确保一切正常,请改用mysql --version

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

    【讨论】:

    • 这个解决方案优雅、可持续,绝对是天才。谢谢!
    • 导出功能在 zsh 上不起作用。使用别名怎么样? (例如alias mysql='/Applications/MAMP/Library/bin/mysql'
    • 这是一个非常酷的方法,但是 MAMP 上的最新版本的 PHP 是 7,大多数应用程序将使用该版本中断。我想知道是否有办法从 conf 文件中获取当前默认值?
    • 有趣的是,将 php 的别名设置为 MAMP 二进制文件在 El Capitan 中不起作用,但将 bin 目录添加到 PATH 可以。有谁知道为什么?谢谢!
    • 在 ls 之前使用 'command' 允许忽略预先存在的 ls 别名: command ls /Applications/MAMP/bin/php/ |排序-n |尾巴 -1
    【解决方案2】:

    每次保存 MAMP 配置(PHP 部分)时,它都会将当前版本的 PHP 保存在 ~/.profile 文件中,并为 php、pear 和 pecl 创建别名,以指向当前配置的版本。 (注意:你需要在 MAMP 中勾选“Make this version available on the command line”选项)

    但是,您需要刷新终端(打开另一个会话)才能刷新此文件。您也可以输入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 配置中读取正确的版本。

    【讨论】:

    • .profile 的自动更新是专业版的吗?只要我一直在使用 MAMP(约 10 年),我就一直不得不手动更新 .profile
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      评论可能为时已晚,但当我在 Mac OSX 上为 XAMPP 安装设置 php PATH 时遇到问题时,我就是这样做的

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

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

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

      解释:当用户从“终端”,因此这里的技巧是让终端找到用户想要的 php,方法是将其指向用户安装的某个 bin 文件夹中的用户 PHP 版本。

      为我工作:)

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

      【讨论】:

        【解决方案5】:

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

        PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1`
        

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

        【讨论】:

        • 我曾希望这会奏效,但当我获取 ~/.bash_profile
        • 在我看来,您的 bash 正在尝试执行 php5.6.10,这很奇怪。预期用途是PHP_VERSION= 'ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1'export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
        【解决方案6】:

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

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

        您可以通过以下方式进行检查:

        php -v
        

        【讨论】:

          【解决方案7】:

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

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

          复制到

          [MAMP INSTALL]\bin\php\[ACTIVE PHP VERSION]

          【讨论】:

            【解决方案8】:

            有时,这样做更容易:

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

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

            你很快就会起来。

            【讨论】:

              【解决方案9】:

              这个对我有用:

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

              【讨论】:

                【解决方案10】:

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

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

                如下编辑,保存,相当并重启终端或交替

                source ~/.bash_profile
                

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

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

                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"
                

                干杯

                【讨论】:

                  【解决方案11】:

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

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

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

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

                  【讨论】:

                  • 在优胜美地这里。在我的情况下,在您的建议仍然产生正确的路径之前执行which php(因为我的.bash_profile 中有路径)但是 phpinfo() 没有显示加载的 mcrypt(或我的 php.ini 中的任何其他扩展名)。但是,这样做可以解决这个问题,非常感谢!
                  • 您应该在主文件夹中创建自己的.bash_profile,这样您的更改只会影响您。
                  【解决方案12】:

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

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

                  然后你可以在你的路径中添加

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

                  您希望您的位领先于 $PATH,因为它已经包含了 PHP 系统所在的 /usr/bin。所以系统总是会先找到你的 MAMP 版本。

                  保存这个文件,然后重启你的终端,你会看到你应该得到你的 MAMP 版本。

                  为了测试,我使用 php -v,因为 OSX Lion 使用 5.3.10,而我的 MAMP 使用的是 5.3.6
                  您还可以使用which php 进行测试,它将输出您当前 php 可执行文件的路径。

                  【讨论】:

                  • 像魔术一样工作。我尝试升级 mac 附带的默认 php,但没有运气。终于现在 PATH 的 php 指向了我的 MAMP 的 php。
                  • 我知道这篇文章有点老了,但也许它可以帮助别人。如果您将 MAMP 与 oh-my-zsh 一起使用,则应将这些 DavidYell 行放在 ~/oh-my-zsh/.zshrc 文件中。您会在第 54 行找到“export PATH”行(至少现在在我当前的更新版本中)。将 DavidYell 的行放在后面。对我来说,工作就像一个魅力。
                  【解决方案13】:

                  如果你必须输入

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

                  在你的命令行中添加

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

                  到您的 PATH 以便能够从任何地方调用 php。

                  【讨论】:

                  • 是的,但是如何将它添加到 PATH 变量中?
                  • export PATH=$PATH:/Applications/MAMP/bin/php5.3/bin 您可能需要重新启动/重新连接终端才能使其工作(至少在并行打开不同终端的情况下)。
                  • 这似乎不是永久性的。当我打开新终端时。它使用/usr/bin/php的默认MAC php路径@
                  • 对于永久存储,您不仅必须将其保存到本地临时路径,还要保存到系统路径。虽然我对 MAC 不熟悉,但应该是export PATH 在你设置(修改它)之后持久化它。
                  猜你喜欢
                  • 1970-01-01
                  • 2016-03-04
                  • 2019-09-11
                  • 2015-04-23
                  • 1970-01-01
                  • 2015-08-11
                  • 1970-01-01
                  • 2017-05-28
                  相关资源
                  最近更新 更多