Php 在MAMP Pro(Nginx)中设置环境变量
使用Nginx时,如何在MAMP Pro中设置环境变量 关于堆栈溢出的现有问题集中在Apache实现上: 这些变量需要使用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中设置环境变量 实际上,您的第一个解决方案不起作用,因为“指
\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”您确定运行您的代码的工作人员正在通过该位置块吗?尝试删除该块和/或将环境变量添加到其他位置块。