那么在Ubuntu 16.04 /etc/php/7.0/apache2/php.ini?

/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等等。