编译安装PHP无法加载php.ini
系统环境:LNMP(centos8,nginx/1.18.0,5.5.67-MariaDB,PHP 7.4.5)
问题点:编译安装php,没有生成/usr/local/etc/php.ini,从源找到配置文件设置到此处,使用过程中尝试修改core设置,发现设置无效,phpinfo()显示php.ini路径正确,已经加载配置文件无。如下图所示:

解决过程:
1. nginx -s stop;nginx(经过尝试得出使用php-fpm其实没有必要),serivce php-fpm reload(尝试无效),尝试两者先后顺序也无效,本人初学不懂其中的机理,结论:此种情况与nginx无关。
2. 由于编译后在设置的配置文件目录中无ini文件,通过cp将源码的ini模板复制过去,当时cp的时候保留权限,查看php.ini的ugo权限确实存在异常。重新调整/etc属主为root,权限755(chown root:root ./etc && chmod 755 ./etc),调整php.ini属主root,权限755(chown root:root php.ini && chmod 755 php.ini ),service php-pfp reload,无效。
❀ 注意此处php.ini属主或许存在问题,php的运行用户是www,此处考虑将php.ini的属主调整为www,为了安全缩小权限范围(chown www:www php.ini && chmod 500 php.ini),这样的改动结合上述操作理论上是无效的,因为上述o权限指定了其他用户具有读取这个配置文件的权限。
3. 怀疑php-fpm无法加载配置文件,使用 strace /usr/local/php/sbin/php-fpm -i &> runlog,查看php-fpm的行为,发现如下:

在lib中找配置文件php.ini,没有发现这个文件,尝试将php.ini,保留权限的情况下复制到此目录下,cp -pf /usr/local/php/etc/php.ini /usr/local/php/lib/php.ini service php-pfp reload,问题暂时解决,具体原因需要进一步学习,希望以后能找出其中的原因。

后期学习:
- 为什么会出现这种情况
- strace的用法