使用sed修改Nginx配置:精准取消PHP块闭合花括号注释
使用sed精准取消Nginx PHP配置块的闭合花括号注释
你已经完成了大部分配置修改,现在要解决的是仅取消PHP块中注释的闭合花括号,而不影响文件里其他注释的},这可以通过sed的地址范围匹配来实现——只在目标PHP配置块的范围内操作,不会误触其他内容。
解决方案命令
你可以添加这条sed命令来完成最后一步:
sudo sed -i '/location ~ \\.php$ {/,/^#\s*}/ s/#\s*}/}/' /etc/nginx/sites-available/default
命令逻辑拆解
让我把这条命令的作用拆解开,方便你理解:
/location ~ \\.php$ {/,/^#\s*}/:这是sed的地址范围匹配规则,表示只处理从匹配location ~ \.php$ {的行开始,到匹配^#\s*}(行首带有可选空格的注释闭合花括号)的行结束的这段内容,精准锁定目标PHP配置块。s/#\s*}/}/:在上述范围内,把行首的#和后续可选的空格替换为空,也就是取消这个花括号的注释,同时保留花括号本身。
完整的修改命令集合
把你已有的命令和这条新命令整合在一起,就是完整的配置修改流程:
# 取消PHP location行的注释 sudo sed -i 's/#\s*location ~ \\.php$ {/location ~ \\.php$ {/g' /etc/nginx/sites-available/default # 取消include行的注释并添加制表符缩进 sudo sed -i 's/#\s*include snippets\/fastcgi-php\.conf;/\tinclude snippets\/fastcgi-php.conf;/g' /etc/nginx/sites-available/default # 修改php-fpm sock路径、取消注释并添加缩进 sudo sed -i 's/#\s*fastcgi_pass unix:\/run\/php\/php7\.0-fpm\.sock;/\tfastcgi_pass unix:\/run\/php\/php7\.1-fpm.sock;/g' /etc/nginx/sites-available/default # 仅取消PHP块内的闭合花括号注释 sudo sed -i '/location ~ \\.php$ {/,/^#\s*}/ s/#\s*}/}/' /etc/nginx/sites-available/default
为什么这个方法可靠?
这个地址范围匹配会精准定位你要修改的PHP配置块,只会处理这个块里的注释闭合花括号,完全不会影响文件中其他地方的注释}——比如其他配置块里的注释花括号,或者代码注释文本里的花括号。
内容的提问来源于stack exchange,提问作者Arno van Oordt
相关产品推荐
相关产品推荐

