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

Php 在MAMP Pro(Nginx)中设置环境变量,php,nginx,mamp,mamp-pro,Php,Nginx,Mamp,Mamp Pro,使用Nginx时,如何在MAMP Pro中设置环境变量 关于堆栈溢出的现有问题集中在Apache实现上: 这些变量需要使用\getenv() 我尝试的解决方案如下: //编辑1月4日:我后来意识到fastcgi_参数的包含路径不正确,它已被修复为:include/Applications/MAMP/conf/nginx/fastcgi_参数但是,环境变量仍然不起作用 PHP: 我也有同样的问题,不能像apache那样轻松地在nginx中设置环境变量 实际上,您的第一个解决方案不起作用,因为“指

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

关于堆栈溢出的现有问题集中在Apache实现上:

这些变量需要使用
\getenv()

我尝试的解决方案如下:

//编辑1月4日:我后来意识到fastcgi_参数的包含路径不正确,它已被修复为:
include/Applications/MAMP/conf/nginx/fastcgi_参数但是,环境变量仍然不起作用

PHP:


我也有同样的问题,不能像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会忽略您的location指令,因为它位于MAMP在同一位置(.php$)生成的指令之后

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

这是指向MAMP文档的链接

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

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

        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
    

  • 对我来说,重新启动后,它工作了。您可以随意使用更复杂的解决方案。

    我也有同样的问题,无法像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会忽略您的location指令,因为它位于MAMP在同一位置(.php$)生成的指令之后

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

    这是指向MAMP文档的链接

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

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

        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
    

  • 对我来说,重新启动后,它工作了。您可以随意使用更复杂的解决方案。

    您重新启动了所有程序吗?(nginx和MAMP?@bishop是的,很多时候只是为了确定没有参数的
    getenv()
    会产生什么?PHP服务器变量,例如:
    [“服务器软件”]=>string(12)“nginx/1.13.2”
    [“网关接口”]=>string(7)“CGI/1.1”
    您确定运行您的代码的工作人员正在通过该位置块吗?尝试删除该块和/或将环境变量添加到其他位置块。是否重新启动了所有程序?(nginx和MAMP?@bishop是的,很多时候只是为了确定没有参数的
    getenv()
    会产生什么?PHP服务器变量,例如:
    [“服务器软件”]=>string(12)“nginx/1.13.2”
    [“网关接口”]=>string(7)“CGI/1.1”您确定运行您的代码的工作人员正在通过该位置块吗?尝试删除该块和/或将环境变量添加到其他位置块。