关于php-fpm和php.ini的一个小Bug
结论写在最前面: web端调用php-fpm的php.ini和cli调用php.ini不一定是同一个。终端打印phpinfo的值加载的是cli的php.ini, web打印phpinfo的值即为php-fpm加载的。
背景: 之前帮同学写的一个项目,据说昨天在使用的时候出了问题,具体是上传文件失败
调试过程: 第一步当然是复现咯,因为我设计的交互是前端传文件,后端返回url,前端再把url传给后端。于是熟练的打开f12,马上发现在第一步就出问题了,即后端没有返回url并报错。
查找原因: 在服务端打印$_FILES,看到tmp_name为"", error为1。果断面向google编程, 基本得到的答案都是php.ini里的 upload_max_filesize太小(忘了有没提到post_max_size,都改就完事了)。ok,知道要怎么解决了。直接
php -i | grep 'ini'
查到Loaded Configuration File => /etc/php.ini ,于是修改/etc/php.ini, 重启php-fpm
kill -USR2 pid
(pid可以通过 ps -ef | grep php-fpm 查)
结果不行,反复在命令行输入
php -i | grep 'max'
确认无误,结果还是没解决.
最终解决:
通过web端打印phpinfo,看到Loaded Configuration File的值是另一个路径
重复修改对应的ini及重启php-fpm即可