为什么命令 'apt install php' 会尝试安装 Apache?

hej*_*san 16 php nginx apt ubuntu-18.04

我正在尝试在我的 Ubuntu 18.04 上安装 WordPress + LEMP。我对安装 Apache 没有兴趣。为什么 PHP 安装程序假定我这样做?

Kei*_*ith 23

根据这个答案AskUbuntu:如何安装PHP没有Apache网络服务器?

Ubuntu软件包详细信息php( php7.2) 取决于 libapache2-mod-php7.2OR php7.2-fpmOR php7.2-cgi

它似乎默认为第一个包,它本身取决于 apache2. 但是如果你先安装后者之一,再安装phpapache2就不会安装了。

如果您使用的是 nginx,您可能需要:

sudo apt install php php7.2-fpm
Run Code Online (Sandbox Code Playgroud)

  • `apt install php7.2-fpm` 应该就是你所需要的——它会自动引入 `php7.2-common`,这就是它的核心。 (2认同)

Jon*_*ley 14

作为替代使用的方法这个答案在你告诉你APT其依赖性想要的,你也可以指定你想要的。例如在 Ubuntu 20.04(该方法在 18.04 for 中仍然有效php7.2),显示php7.3包的依赖项(省略无关行):

$ apt show php7.3
Depends: libapache2-mod-php7.3 | php7.3-fpm | php7.3-cgi, php7.3-common
Run Code Online (Sandbox Code Playgroud)

的| 符号表示“或”,并告诉您依赖关系可以通过libapache2-mod-php7.3,php7.3-fpm或来满足php7.3-cgi

如果我们继续安装包,我们可以看到 APT 将从列表 ( libapache2-mod-php7.3) 中选择第一个依赖项:

# apt install php7.3
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.3 libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0 php-common php7.3
  php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline ssl-cert
Do you want to continue? [Y/n] n
Abort.
Run Code Online (Sandbox Code Playgroud)

如果您对此不满意,您可以通过在不需要的包的名称后面放置一个连字符来告诉 APT 您不想要该依赖项。如果你这样做,那么 APT 会从列表 ( php7.3-fpm) 中选择第二个依赖项:

# apt install php7.3 libapache2-mod-php7.3-
The following NEW packages will be installed:
  php-common php7.3 php7.3-cli php7.3-common php7.3-fpm php7.3-json php7.3-opcache
  php7.3-readline
Do you want to continue? [Y/n] n
Abort.
Run Code Online (Sandbox Code Playgroud)

如果您知道自己不想要特定的依赖项,但对使用哪种替代方案无动于衷,则此方法很有用。另一方面,如果您知道自己需要一个特定的方法,请使用另一个答案中的方法。