【问题标题】:Setting Environment Variables in MAMP?在 MAMP 中设置环境变量?
【发布时间】:2012-06-30 15:27:29
【问题描述】:

我假设 MAMP 环境变量可以在 ~/.bash_profile 中设置,但似乎在那里设置它们并不总是立即生效。例如,我只是在我的 .bash_profile 中设置了一个变量,并尝试重新启动 MAMP 服务器、重新启动 MAMP 本身,甚至注销我的计算机,但似乎没有任何效果。在我的环境中仍然无法访问该变量。是否有另一种方法来设置我缺少的 MAMP 环境变量,或者是否有需要清除的缓存?

提前致谢。

【问题讨论】:

    标签: php macos mamp


    【解决方案1】:

    您还可以在主机设置面板的扩展选项卡中的additional parameters for <VirtualHost>: 部分中设置 MAMP Pro(MAMP 中不可用)中的 PHP 环境变量。

    屏幕截图来自 MAMP Pro v 3.0.3

    【讨论】:

    • 假设您使用的是 MAMP Pro。
    • 你也可以添加 cmets: # 设置本地环境变量 SetEnv APP_ENV local
    • 如何更改默认库路径?我现在有 /user/bin 但我的库在 /usr/local/bin/ffmpeg 所以要更改它我应该像 SetEnv APPLICATION_ENV /usr/local/bin 一样编写它?
    【解决方案2】:

    MAMP 将在启动 apache 时将/Applications/MAMP/Library/bin/envvars 的内容加载到其环境变量中。所以你可以编辑文件并添加:

    MY_VAR="foo"
    export MY_VAR
    

    然后像这样访问该变量:

    echo $_ENV["MY_VAR"];
    

    打印:

    foo
    

    OSX Yosemite 更新:

    envvars 重命名为_envvars

    见:MAMP Pro 3.05 on Mavericks updated to Yosemite - Apache does not start

    【讨论】:

    • 这在 MAMP Pro 3.0.6 上对我不起作用。我尝试编辑此文件以及其他相邻文件 envvars_envvars-std 在每次更改后重新启动 MAMP。有没有我可以深入研究的配置文件来查看它的加载位置?是否有任何其他先决条件才能起作用?我希望在我的所有主机上添加一些 ENV,这使得这个解决方案比下面的每个主机更有吸引力。
    • @EvanMattson 我没有安装 MAMP Pro,但如果您能找到 MAMP Pro 使用的 apachectl 脚本,您可以阅读该源代码以找到答案。在我的情况下,正确 envvars 文件的路径位于 # pick up any necessary environment variables 的注释下
    • 感谢您指出该文件。我可能只是误解了这一点。我正在使用 PHP 检查这些是否存在,但这些可能是 Apache 环境变量,对吧? SetEnv 方法有效,但就像我说的,我想在我的所有主机上定义变量,而不是为每个主机定义它们。
    • 如果envvars 文件不适合你,SetEnv 可能就是你需要的。但是您可能想在此处阅读有关该答案的更多详细信息:httpd.apache.org/docs/2.2/env.html
    • 我在本地尝试过,它确实有效。如果它不起作用,您需要创建envvars
      试试这个找出文件的正确路径:$ cat /Applications/MAMP/Library/bin/apachectl | grep envvars 在我的例子中它的 /Applications/MAMP/Library/bin/envvars,它不存在,所以我创建了它:
      vim /Applications/MAMP/Library/bin/envvars
      /Applications/MAMP/Library/bin/envars_ 中查找语法示例。
    【解决方案3】:

    您可以在 Apache 配置中设置环境变量...

    /Applications/MAMP/conf/apache/httpd.conf
    
    SetEnv MY_VAR theValue
    SetEnv ANOTHER thisIsTheValue
    

    【讨论】:

    • 这是唯一对我有用的方法 - 在 MAMP 4(非专业版)版本中
    【解决方案4】:

    MAMP 正在寻找“/Applications/MAMP/Library/bin/envvars”,如果该文件没有,只需创建它并添加您的环境变量。

    【讨论】:

    • 也使用:echo 'export KEY=VALUE' >> /Applications/MAMP/Library/bin/envvars
    【解决方案5】:

    我假设你说的是本地服务器?

    我注意到,如果您查看 apache 可以运行多个实例的进程,您可能需要检查这些进程。如果是,请单独退出它们,因为在重新启动所有实例之前,重新启动不会接受新的更改。有什么可以尝试的。

    【讨论】:

      【解决方案6】:

      如果您仍然无法获取环境变量:

      您可能需要在 real httpd.conf 中编辑

      ~/库/应用程序支持/appsolute/MAMP PRO/

      而不是

      /Applications/MAMP/conf/apache/

      您可能还需要使用 getenv() 而不是 $_ENV

      【讨论】:

        【解决方案7】:

        但它不适用于 El Capitan。你应该禁用System Integrity Protection

        original

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-13
          • 2011-03-25
          • 2015-02-01
          • 2017-01-01
          • 2017-10-30
          • 2012-03-22
          • 2015-04-06
          相关资源
          最近更新 更多