在MAMP Pro(Nginx)中设置环境变量

问题描述 投票:1回答:1

使用Nginx时如何在MAMP Pro中设置环境变量?

关于堆栈溢出的现有问题集中在Apache实现上:Setting Environment Variables in MAMP?

这些变量需要使用\getenv()从PHP中检索

我尝试的解决方法如下:

//编辑1月4日:我后来意识到,fastcgi_params包含的路径不正确,此后已修复为:include /Applications/MAMP/conf/nginx/fastcgi_params;,但是环境变量仍然无法运行enter image description here

PHP:

<?php

\var_dump( \getenv('DB_DSN') ); 
//outputs 'bool(false)'

这里是尝试设置环境变量TEST的另一种尝试:

enter image description here

PHP:

<?php

\var_dump( \getenv('TEST') ); 
//outputs 'bool(false)'
php nginx mamp mamp-pro
1个回答
0
投票

我遇到了同样的问题,无法像在Apache中那样轻松地在nginx中设置环境变量。

实际上,您的第一个解决方案不起作用,因为内容“指令的附加参数”放置在MAMP生成的此指令之后。

location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_php7.2.1.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          /Applications/MAMP/conf/nginx/fastcgi_params;
        }

您的位置指令随后被nginx忽略,因为它位于MAMP在同一位置(.php $)生成的位置指令之后。

这是解决方法。 MAMP在每次服务器启动时重新创建nginx.conf文件。这是使用模板创建的。您实际上可以修改模板以生成适合您需要的conf文件。

这是MAMP文档的链接。 https://documentation.mamp.info/en/MAMP-PRO-Mac/Menu/File/

我编辑了nginx.cenf模板,以在由MAMP创建位置之前,立即添加“指令的附加参数”框的内容。

  1. 在MAMP中编辑nginx.conf。文件>编辑模板> nginx
  2. 找到关键字MAMP_VirtualHost_AdditionalCustom_MAMP并将其删除
  3. 将相同的指令放在此块的前面

        MAMP_VirtualHost_AdditionalCustom_MAMP
    
        MAMP_Nginx_ReverseProxy_IF_MAMP
        # proxy the PHP scripts to Apache
        location ~ \.php$ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://MAMP_Apache_IP_MAMP:MAMP_Apache_Port_MAMP;
        }
        MAMP_Nginx_ReverseProxy_ELSE_MAMP
        location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpHost_MAMP.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          /Applications/MAMP/conf/nginx/fastcgi_params;
        }
        MAMP_Nginx_ReverseProxy_END_MAMP
    

重新启动后对我有效。您可以摆弄更复杂的解决方案。

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