/etc/php/7.0/apache2/php.ini文件在Ubuntu 16.04上来自哪里?
dpkg -S /etc/php/7.0/apache2/php.ini
什么也不返回
dpkg -S /etc/php/7.0/apache2/
显示该目录是由libapache2-mod-php7.0包安装的,但是
dpkg-query -L libapache2-mod-php7.0
不提“php.ini”。 我猜这个文件是在postinstall过程中复制的。 有没有办法确定哪个软件包安装正在创build这个文件?
当你正在寻找系统上的东西时,你可能只想尝试像这样的命令grep 'php.ini' /var/lib/dpkg/info/*
。 /var/lib/dpkg/info/
包含与软件包相关的文件,其中包括由dpkg -S使用的packagename.conffiles
,作为conffiles列表的packagename.conffiles
,以及各种pre / post安装/删除像packagename.actionname
脚本。
# grep 'php.ini' /var/lib/dpkg/info/* /var/lib/dpkg/info/libapache2-mod-php7.0.postinst: phpini="/etc/php/7.0/apache2/php.ini" /var/lib/dpkg/info/libapache2-mod-php7.0.postinst: ucf /usr/lib/php/7.0/php.ini-production.apache2 $phpini /var/lib/dpkg/info/libapache2-mod-php7.0.postinst: ucf /usr/lib/php/7.0/php.ini-production $phpini /var/lib/dpkg/info/libapache2-mod-php7.0.postrm: phpini=/etc/php/7.0/apache2/php.ini /var/lib/dpkg/info/php7.0-cli.postinst: phpini="/etc/php/7.0/cli/php.ini" ... # cat /var/lib/dpkg/info/libapache2-mod-php7.0.postinst ... if [ "$1" = "configure" ]; then phpini="/etc/php/7.0/apache2/php.ini" if [ "apache2" = "cli" ]; then ucf /usr/lib/php/7.0/php.ini-production.apache2 $phpini else ucf /usr/lib/php/7.0/php.ini-production $phpini fi ucfr libapache2-mod-php7.0 $phpini ...
无论如何,对于这个特定的查询,我们看到php.ini正在通过/usr/lib/php/7.0/php.ini-production
ucf添加。 UCF是Debian软件包可以用来维护configuration文件的几个工具之一。 UCF可以接受用户合并的一些值,在某些情况下可以检测和自动更新或合并configuration等等。