Homestead置备时修改PHP ini值的最优方法咨询
嘿,关于在Homestead虚拟机里修改PHP ini配置的最佳方式,我给你梳理几个靠谱的方案,按推荐程度排序哈:
Homestead本身就提供了非常友好的配置方式,完全不用手动去改ini文件或者写复杂的shell脚本。你只需要在项目根目录的Homestead.yaml文件里,添加php节点来定义要修改的参数就行——它会自动帮你处理不同PHP版本的配置文件,还能在provision的时候保持同步,绝对是最省心的选择。
比如你要把display_startup_errors改成On,直接这么写:
php: display_startup_errors: On
要是需要修改多个参数,接着往下加就好:
php: display_startup_errors: On error_reporting: E_ALL memory_limit: 512M
写完之后执行vagrant provision,配置就会自动生效,连服务重启都不用你操心~
如果有些配置Homestead的yaml没有直接支持,或者你需要做更复杂的自定义操作,那用after.sh脚本是个不错的选择。它是Homestead官方专门留给用户自定义provision步骤的入口,位置在Homestead目录的scripts/after.sh里。
比如用sed命令修改ini值,你可以这么写(记得对应你的PHP版本):
# 修改PHP 8.2的FPM和CLI配置 sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.2/fpm/php.ini sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.2/cli/php.ini # 如果有多个PHP版本,重复对应路径即可 sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.1/fpm/php.ini sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.1/cli/php.ini # 记得重启PHP-FPM服务让配置生效 service php8.2-fpm restart service php8.1-fpm restart
保存后执行vagrant provision,脚本就会自动运行。这种方式的好处是不会和Homestead的默认provision逻辑冲突,也能把自定义操作集中管理。
这种方式不是不能用,但确实不如前两种优雅。因为你得把shell命令直接写在Vagrantfile里,会让配置文件变得杂乱,而且Homestead已经封装了after.sh,完全没必要重复造轮子。如果非要尝试的话,大概是这样:
config.vm.provision "shell", inline: <<-SHELL sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.2/fpm/php.ini sed -i 's/display_startup_errors = Off/display_startup_errors = On/g' /etc/php/8.2/cli/php.ini service php8.2-fpm restart SHELL
但真心建议优先用前两种方案,尤其是第一种,简单又靠谱。
内容的提问来源于stack exchange,提问作者shineability

