使用Nginx时如何在MAMP Pro中设置环境变量?
关于堆栈溢出的现有问题集中在Apache实现上:Setting Environment Variables in MAMP?
这些变量需要使用\getenv()
从PHP中检索
我尝试的解决方法如下:
//编辑1月4日:我后来意识到,fastcgi_params包含的路径不正确,此后已修复为:include /Applications/MAMP/conf/nginx/fastcgi_params;
,但是环境变量仍然无法运行
PHP:
<?php
\var_dump( \getenv('DB_DSN') );
//outputs 'bool(false)'
这里是尝试设置环境变量TEST
的另一种尝试:
PHP:
<?php
\var_dump( \getenv('TEST') );
//outputs 'bool(false)'
我遇到了同样的问题,无法像在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创建位置之前,立即添加“指令的附加参数”框的内容。
将相同的指令放在此块的前面
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
重新启动后对我有效。您可以摆弄更复杂的解决方案。