Ubuntu 16.04 中的 /etc/php/7.0/apache2/php.ini 从何而来?

Ubuntu 16.04 中的 /etc/php/7.0/apache2/php.ini 从何而来?

Ubuntu 16.04 上的 /etc/php/7.0/apache2/php.ini 文件来自哪里?

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”。我猜想这个文件是在安装后过程中复制的。有没有办法确定哪个软件包安装正在创建这个文件?

答案1

当你经常搜索系统中某些东西是怎么回事时,你可能只想尝试这样的命令grep 'php.ini' /var/lib/dpkg/info/*/var/lib/dpkg/info/包含与软件包相关的文件,其中包括packagename.listdpkg -S 使用的 ,packagename.conffilesconffiles 的列表,以及各种安装/删除前/后脚本的文件,例如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 是 Debian 软件包用来维护配置文件的少数工具之一。UCF 可以接受来自用户的一些要合并的值,它可以在某些情况下检测并自动更新或合并配置等等。

相关内容