在 Debian 10 / Debian 9 上安装 PHP 7.4

在 Debian 10 / Debian 9 上安装 PHP 7.4

我主要使用 Windows。我有一台装有 OMV 的 Debian 9 VM,想更新 php 版本。我读到并意识到需要更新整个操作系统才能获得最新的 php 版本?为什么需要更新整个操作系统才能获得最新的 php 版本?我想其他软件也是如此?

答案1

为什么?

官方文档中对此进行了很好的解释选择 Debian 发行版。Debian 选择重视稳定性而不是新功能。这就是为什么它的一些软件相当老旧。我建议也阅读给新用户的建议:不要破坏他们的 Debian 系统, 尤其:

不要患上闪亮新事物综合症

Debian Stable 之所以如此可靠,是因为软件在被纳入之前经过了广泛的测试和错误修复。这意味着最新版本的软件通常不在稳定存储库中。但这并不意味着软件太旧而无法使用!

不要盲目听从错误的建议

不幸的是,互联网上有很多错误的建议。博客、论坛和其他网站上的教程通常包含一些会以微妙的方式破坏系统的说明。不要简单地遵循您找到的第一个建议或看似最简单的教程。花一些时间阅读文档并比较教程之间的差异。

最好先花时间弄清楚做某事的正确方法,而不是以后花更多时间修复损坏的系统。

您不需要升级整个 Debian...

一旦你意识到上一节中的警告,实际上可以升级 PHP 而不升级整个 Debian。Debian 方式不使用官方存储库这样做可能会增加德布苏里Debian 数据保护协议存储库到您的 APT 源。

Ryan Erwin 的答案中的教程似乎很合理,但请记住(来自同一个不要破坏Debian文章)那...

博客和论坛帖子不会过期。几年前可能安全的说明现在可能不再安全。如有疑问,请继续研究并阅读您版本的文档。

这也适用于问答网站上的任何答案。此处所写的内容在未来版本中可能会有所不同。

答案2

我读过并意识到您需要更新整个操作系统才能获得最新的 php 版本?

更新整个操作系统是一种选择,而且是个不错的选择。Debian 10 现已稳定,并将为您的整个系统带来大量增强功能和安全更新。

为什么需要更新整个操作系统才能获得最新的 php 版本;我认为其他软件也是如此?

首先,什么是 Linux 发行版?要成为新版本,需要进行哪些更改?也许您读过《忒修斯之船》……如果您一次更换每个部件,那么原有的东西现在还是新东西吗?:-)

因此,当您将 Debian 9 升级到 Debian 10 时,您不仅升级了 PHP,还升级了系统中测试的所有内容……但是,即使这样,您也不会拥有许多程序的最新版本,因为每天都会有新版本发布。如果您升级到 Debian 10,您只会获得一个相对较新的 PHP 版本(以及所有其他版本)。

因此,如果您真的想要获得最新版本的 PHP,您需要从源代码自行构建它,或者找到已经完成此操作的地方,最好是一个可以保持二进制文件更新的地方,以便您可以自动获取安全更新。

这是基于 DEB.SURY.ORG 包在 Debian 9 上构建 PHP 的良好指南:

在 Debian 10 / Debian 9 上安装 PHP 7.4

按照以下步骤在 Debian 10 和 Debian 9 Linux 发行版上安装 PHP 7.4。Debian 的 PHP 最新版本可在 SURY PHP PPA 存储库中找到。我们将添加存储库作为先决条件,然后从中在 Debian 10 / Debian 9 上安装 PHP 7.4。

步骤 1:更新系统

确保您的系统已更新:

sudo apt update
sudo apt upgrade -y && sudo reboot

第 2 步:添加 SURY PHP PPA 存储库

下载 PPA 存储库并将其存储在 Debian 服务器/桌面上的文件中。但首先,请下载 GPG 密钥。

sudo apt -y install lsb-release apt-transport-https ca-certificates 
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

然后添加存储库。

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

步骤 3:在 Debian 10 / Debian 9 上安装 PHP 7.4

最后一步是在 Debian 10 / Debian 9 上安装 PHP 7.4。安装前,更新添加的存储库上的系统包列表。

sudo apt update

然后在 Debian 10 / Debian 9 上安装 PHP 7.4:

sudo apt -y install php7.4

当提示在 Debian 10 / Debian 9 Linux 系统上完成 PHP 7.4 的安装时,回答是。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
  libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.4-2 libldap-common liblua5.2-0 libnghttp2-14 libpcre2-8-0 libperl5.28 librtmp1
  libsasl2-2 libsasl2-modules libsasl2-modules-db libsodium23 libssh2-1 perl perl-modules-5.28 php-common php7.4-cli php7.4-common php7.4-json
  php7.4-opcache php7.4-readline psmisc ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
  libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make
  libb-debug-perl liblocale-codes-perl openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
  libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.4-2 libldap-common liblua5.2-0 libnghttp2-14 libperl5.28 librtmp1 libsasl2-2
  libsasl2-modules libsasl2-modules-db libsodium23 libssh2-1 perl perl-modules-5.28 php-common php7.4 php7.4-cli php7.4-common php7.4-json
  php7.4-opcache php7.4-readline psmisc ssl-cert
The following packages will be upgraded:
  libpcre2-8-0
1 upgraded, 36 newly installed, 0 to remove and 7 not upgraded.
Need to get 15.0 MB of archives.
After this operation, 76.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

使用下一个命令来安装其他包:

sudo apt-get install php7.4-xxx

例子:

sudo apt-get install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip}

与 Apache 相关的 PHP 配置存储在/etc/php/7.4/apache2/php.ini

使用 PHP 和 Nginx:

Debian 上 php 的安装会配置 Apache。对于有兴趣运行 Nginx 和 PHP 的用户,您需要停止并禁用 Apache 服务。

sudo systemctl disable --now apache2

然后安装 fpm 扩展和 nginx 包。

sudo apt-get install nginx php7.4-fpm

PHP FPM 配置文件位于以下目录中:/etc/php/7.4/fpm/

nginx 和 php-fpm 服务应该正在运行。

$ systemctl status php7.4-fpm nginx
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-09-19 17:32:26 UTC; 14s ago
     Docs: man:php-fpm7.4(8)
 Main PID: 12151 (php-fpm7.4)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 2377)
   Memory: 14.7M
   CGroup: /system.slice/php7.4-fpm.service
           ├─12151 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
           ├─12152 php-fpm: pool www
           └─12153 php-fpm: pool www

Sep 19 17:32:26 deb10 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Sep 19 17:32:26 deb10 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-09-19 17:32:27 UTC; 12s ago
     Docs: man:nginx(8)
 Main PID: 12362 (nginx)
    Tasks: 2 (limit: 2377)
   Memory: 3.2M
   CGroup: /system.slice/nginx.service
           ├─12362 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─12363 nginx: worker process

Sep 19 17:32:27 deb10 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 19 17:32:27 deb10 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 19 17:32:27 deb10 systemd[1]: Started A high performance web server and a reverse proxy server.

在 Debian 9 Linux 系统上使用 PHP 7.4 享受网站和 Web 应用程序开发

答案3

特定操作系统版本(stretch、buster)中的软件包在该操作系统版本的生命周期内保持特定版本。安全更新通常会被反向移植,即使上游维护人员已停止支持 PHP 版本,以确保仍然受支持的 Debian 版本不会成为安全噩梦。

这可确保您能够使用 PHP 版本部署网站,即使新功能或功能在后续版本中被弃用和删除,您的网站仍可正常运行。只有当您决定升级到新版本的操作系统时,您才有可能因平台堆栈中删除的功能而破坏您的网站。

也就是说,您不必升级所有内容。您可以从下一个版本甚至预发布的“测试”存储库或尚未准备好投入生产的“不稳定”存储库安装一些软件包。(专业提示:在生产环境中安装之前,先在暂存环境中测试它们。我希望我不必大声说出来。)

有一个很好的 ServerFault 答案解释了如何做到这一点:

我如何才能运行 Debian 稳定版但安装一些测试版软件包?

如果你想知道某个特定软件包的哪些版本适用于任何操作系统版本或预发布版本,请转到https://packages.debian.org/或者https://packages.ubuntu.com/

相关内容