40

我想在 AWS EC2 T2.Micro 实例上安装最新的 PHP 7.0。到目前为止,我已经读到 AWS 不支持 PHP 7。但是,嘿.. 这只是云中的一个虚拟服务器,我可以完全控制它的配置,所以必须有一些方法可以让 PHP 7 在上面运行一。

非常感谢任何帮助。

我的盒子如下

$ cat /etc/*-release
---------------------------------------
NAME="Amazon Linux AMI"
VERSION="2015.09"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2015.09"
PRETTY_NAME="Amazon Linux AMI 2015.09"
ANSI_COLOR="0;33"
CPE_NAME="[*not significant*]"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Amazon Linux AMI release 2015.09

$ uname -a
---------------------------------------
Linux ip-xxx-xxx-xxx-xxx 4.1.13-18.26.amzn1.x86_64 #1 [date] x86_64 x86_64 x86_64 GNU/Linux

$ uname -mrs
---------------------------------------
Linux 4.1.13-18.26.amzn1.x86_64 x86_64

$ cat /proc/version
---------------------------------------
Linux version 4.1.13-18.26.amzn1.x86_64 (mockbuild@gobi-build-64010) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) )
4

14 回答 14

71

您现在可以使用官方的 php7 软件包。这是一个易于遵循的指南。

1. 在 Amazon Linux AMI 上安装 Apache 2.4 和 PHP 7.0

# Remove current apache & php 
sudo yum remove httpd* php*

# Install Apache 2.4
sudo yum install httpd24

# Install PHP 7.0 
# automatically includes php70-cli php70-common php70-json php70-process php70-xml
sudo yum install php70

# Install additional commonly used php packages
sudo yum install php70-gd
sudo yum install php70-imap
sudo yum install php70-mbstring
sudo yum install php70-mysqlnd
sudo yum install php70-opcache
sudo yum install php70-pdo
sudo yum install php70-pecl-apcu

2. 修改 DirectoryIndex 以包含 index.php

sudo nano /etc/httpd/conf/httpd.conf

找到这个:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

并将其修改为如下所示:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

如果目录包含 index.html 和 index.php,则服务器将使用此设置提供 index.html。如果您不希望这种情况发生,您有以下选择:

颠倒顺序,因此index.php在两个文件都存在时提供:

 <IfModule dir_module>
    DirectoryIndex index.php index.html
 </IfModule>

仅使用 index.php 作为 DirectoryIndex:

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

3. 启动 Apache Web 服务器

sudo service httpd start

4. 将 Apache Web 服务器配置为在每次系统启动时启动

sudo chkconfig httpd on

5. 测试你的安装

创建 phpinfo.php:

echo '<?php print phpinfo();' | sudo tee --append /var/www/html/phpinfo.php

打开浏览器,在地址栏中输入实例的公网 IP,后跟 /phpinfo.php

Example: http://xxx.xxx.xxx.xxx/phpinfo.php

注意:不要忘记在您的实例的安全组中允许 HTTP(端口 80)的传入连接,否则您的请求将超时。

于 2016-11-14T03:21:38.713 回答
34

我在我的实例上运行了这个。您需要 http2.2 才能与 webtatic repo 一起使用。我有很多回购,有很多不同的版本不兼容。我没有保留很好的笔记,但看看我的历史,我基本上是这样做的:

# Remove current php & apache
sudo service httpd stop
sudo yum remove httpd* php* 

# Remove any third party repos that aren't relevant
sudo yum repolist
sudo yum remove remi-safe

# Install Standard Apache for Amazon AMI
sudo yum install httpd   #specify http22 if you get a different version

# Download webtatic
mkdir -p /tmp/php7
cd /tmp/php7
wget https://mirror.webtatic.com/yum/el6/latest.rpm

# Install webtatic repo
sudo yum install latest.rpm
sudo vi /etc/yum.repos.d/webtatic.repo  'set repo enables
sudo yum clean all

# Install base php7
sudo yum install --enablerepo=webtatic php70w
php -v   #Should say something like  PHP 7.0.2 (cli) (built: Jan  9 2016 16:09:32) ( NTS )
sudo yum install php70w-opcache
sudo yum install php70w-xml
sudo yum install php70w-pdo
sudo yum install php70w-mysqlnd
sudo yum install php70w-gd
sudo yum install php70w-apcu
sudo yum install php70w-pecl-apcu
sudo yum install php70w-mbstring
sudo yum install php70w-imap

# Restart apache
sudo service httpd restart
于 2016-02-07T19:58:01.020 回答
32

当前问题的答案(不是原始版本) - 值得知道,因为这有点简单,并且 php7 在 Amazon Linux 2 的标准存储库中不可用,直到我更加努力地搜索才出现:

amazon-linux-extras install php7.2

如果 v7.2 不再是最新版本,可以使用 list 命令检查 extras 的版本:

amazon-linux-extras list
于 2018-06-04T03:41:44.133 回答
13

截至 2016 年 7 月 14 日,现在有适用于 aws linux 的官方 php7 软件包。请参阅https://forums.aws.amazon.com/ann.jspa?annID=3902上的公告

要列出可用的软件包,请运行 yum list php70*

于 2016-07-19T13:28:10.707 回答
10

我在已经有 apache 2.4 和 PHP 5.5 的生产机器上安装 PHP 7.0。我想以一种不会出现服务器中断的方式在它旁边安装 PHP 7.0。这就是我所做的。

# Install PHP 7.0 
# automatically includes php70-cli php70-common php70-json php70-process php70-xml
sudo yum install php70

# Install additional commonly used php packages
sudo yum install php70-gd
sudo yum install php70-imap
sudo yum install php70-mbstring
sudo yum install php70-mysqlnd
sudo yum install php70-opcache
sudo yum install php70-pecl-apcu

这愉快地安装了 PHP 7 和 PHP 5.5。诀窍是告诉 apache 使用 7.0。我不确定这是否是最好的方法,但我通过更改这两个永久链接实现了这一点:

ln -sf /etc/httpd/conf.d/php-conf.7.0 /etc/alternatives/php.conf
ln -sf /etc/httpd/conf.modules.d/15-php-conf.7.0 /etc/alternatives/10-php.conf

此时 apache 仍然在愉快地运行 5.5。然后,当您重新启动 apache 时,它​​应该可以使用 7.0(可能是 7.0.1)。这是不停机的方式。我仍然建议做我所做的,即在另一个实例上重建 PROD(创建一个 TEST 服务器)并在实际在 PROD 上执行之前对其进行一次测试。祝你好运!

哦,现在php命令仍将运行 5.5。您可以更改任何脚本或 CRON 作业以指向 php7 或通过运行更改默认版本

alternatives --config php
于 2017-02-08T11:04:46.707 回答
10

其他答案似乎只适用于 Apache 2.2 而不是 2.4。

以下是我在运行 Apache 2.4 的 Amazon Linux 上安装 php7 的方法:

首先,如果已经安装了 php,则将其删除:

sudo yum remove php5*

注意要删除的 php5 软件包,因为您需要安装它们的 php7 版本。php7 包名称与其对应的 php5 包名称具有相当直接且明确的映射,如下所示。其余说明涵盖了经典的 LAMP 堆栈,可能足以满足您的用例。

使用来自http://www.spidersoft.com.au/2015/php-7-on-ami-linux-ec2/的说明

wget http://mirrors.mediatemple.net/remi/enterprise/remi-release-6.rpm
sudo yum install remi-release-6.rpm

编辑/etc/yum.repos.d/epel.repo和设置enabled=1

sudo yum upgrade -y
sudo yum install php70 php70-php-fpm php70-php-xml php70-php-pdo php70-php-mysqlnd php70-php-gd php70-php-pecl-apcu php70-php-mbstring php70-php-mcrypt php70-php-opcache

现在您应该安装了 php70-php-fpm,您可以将其与 apache 结合使用:

启动 fpm 守护进程:

sudo service php70-php-fpm start

将 Apache 从 prefork 切换到 mpm 事件工作者(这是必需的,因为 mod_php 不是线程安全的)/etc/httpd/conf.modules.d/00-mpm.conf

LoadModule mpm_event_module modules/mod_mpm_event.so

通过在/etc/httpd/conf/httpd.conf

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
DirectoryIndex /index.php index.php

使用 重新启动 apache sudo service httpd restart。如果一切顺利,您应该能够通过请求包含phpinfo().

如果您有使用 php 的 cli 解释器并因此以 开头的现有 shell 脚本#!/usr/bin/php,那么您必须设置一个符号链接到,/usr/bin/php因为二进制文件现在命名为/usr/bin/php70. 您可以按如下方式执行此操作:

sudo ln -s /usr/bin/php70 /usr/bin/php

有关如何配置 php-fpm 的更多信息,请参阅https://wiki.apache.org/httpd/PHP-FPM

于 2016-02-13T17:30:03.160 回答
4

这很简单。只是:

sudo amazon-linux-extras install -y php7.2
于 2019-03-21T08:36:43.643 回答
3

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

可以按照此 LAMP 安装分步指南进行操作

sudo yum update -y

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

sudo service httpd start
于 2017-07-03T02:51:49.803 回答
2

如果您想要快速复制粘贴安装:

wget http://mirrors.mediatemple.net/remi/enterprise/remi-release-6.rpm
sudo yum install -y remi-release-6.rpm
sudo yum update -y
sudo yum install -y --enablerepo=epel php70

测试:

php70 -v

如果您希望可执行文件为php

ln -s /usr/bin/php70 /usr/local/bin/php 
php -v
于 2016-05-18T13:27:51.440 回答
2

该线程帮助我足够接近以完成它,我正在共享对我有用的命令和输出。

在带有 Amazon Linux ( amzn1.x86_64 ) 的Amazon Lightsail上,以下命令列表帮助我摆脱了 Apache 2.2 和 PHP 5.3 的系统,转而使用 Apache 2.4 和 PHP

  1. 删除当前版本的php和相关工具:

sudo yum remove php*

==============================================================================================================================================
Package                           Arch                        Version                                  Repository                       Size
==============================================================================================================================================
Removing:
 php                               x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      7.4 M
 php-cli                           x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      6.4 M
 php-common                        x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      6.3 M
 php-devel                         x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      9.9 M
 php-gd                            x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      669 k
 php-mbstring                      x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      4.1 M
 php-mcrypt                        x86_64                      5.3.29-1.8.amzn1                         @amzn-main                       92 k
 php-mysql                         x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      445 k
 php-pdo                           x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      381 k
 php-xml                           x86_64                      5.3.29-1.8.amzn1                         @amzn-main                      625 k

Transaction Summary
==============================================================================================================================================
Remove  10 Packages
  1. 删除当前版本的 Apache(请注意,在执行此操作之前,您应该备份您的confandconf.d文件夹,恕我直言;在我的情况下,这是一个新的系统设置,所以那里没有什么有趣的东西):

sudo yum remove http*

==============================================================================================================================================
 Package                           Arch                         Version                                Repository                        Size
==============================================================================================================================================
Removing:
 httpd                             x86_64                       2.2.31-1.8.amzn1                       @amzn-main                       3.0 M
 httpd-devel                       x86_64                       2.2.31-1.8.amzn1                       @amzn-main                       534 k
 httpd-tools                       x86_64                       2.2.31-1.8.amzn1                       @amzn-main                       135 k

Transaction Summary
==============================================================================================================================================
Remove  3 Packages
  1. 安装 Apache 2.4(并启动 Apache)

sudo yum install httpd24.x86_64

sudo service httpd start

  1. 安装 PHP 7

sudo yum install php70

==============================================================================================================================================
 Package                           Arch                       Version                                  Repository                        Size
==============================================================================================================================================
Installing:
 php70                             x86_64                     7.0.13-1.19.amzn1                        amzn-updates                     3.3 M
Installing for dependencies:
 php70-cli                         x86_64                     7.0.13-1.19.amzn1                        amzn-updates                     4.7 M
 php70-common                      x86_64                     7.0.13-1.19.amzn1                        amzn-updates                     1.2 M
 php70-json                        x86_64                     7.0.13-1.19.amzn1                        amzn-updates                      65 k
 php70-process                     x86_64                     7.0.13-1.19.amzn1                        amzn-updates                      79 k
 php70-xml                         x86_64                     7.0.13-1.19.amzn1                        amzn-updates                     309 k

Transaction Summary
==============================================================================================================================================
Install  1 Package (+5 Dependent packages)

Total download size: 9.6 M
Installed size: 31 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): php70-7.0.13-1.19.amzn1.x86_64.rpm                                                                              | 3.3 MB     00:00
(2/6): php70-cli-7.0.13-1.19.amzn1.x86_64.rpm                                                                          | 4.7 MB     00:00
(3/6): php70-common-7.0.13-1.19.amzn1.x86_64.rpm                                                                       | 1.2 MB     00:00
(4/6): php70-json-7.0.13-1.19.amzn1.x86_64.rpm                                                                         |  65 kB     00:00
(5/6): php70-process-7.0.13-1.19.amzn1.x86_64.rpm                                                                      |  79 kB     00:00
(6/6): php70-xml-7.0.13-1.19.amzn1.x86_64.rpm                                                                          | 309 kB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                          14 MB/s | 9.6 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : php70-json-7.0.13-1.19.amzn1.x86_64                                                                                        1/6
  Installing : php70-process-7.0.13-1.19.amzn1.x86_64                                                                                     2/6
  Installing : php70-xml-7.0.13-1.19.amzn1.x86_64                                                                                         3/6
  Installing : php70-cli-7.0.13-1.19.amzn1.x86_64                                                                                         4/6
  Installing : php70-common-7.0.13-1.19.amzn1.x86_64                                                                                      5/6
  Installing : php70-7.0.13-1.19.amzn1.x86_64                                                                                             6/6
  Verifying  : php70-7.0.13-1.19.amzn1.x86_64                                                                                             1/6
  Verifying  : php70-common-7.0.13-1.19.amzn1.x86_64                                                                                      2/6
  Verifying  : php70-json-7.0.13-1.19.amzn1.x86_64                                                                                        3/6
  Verifying  : php70-process-7.0.13-1.19.amzn1.x86_64                                                                                     4/6
  Verifying  : php70-xml-7.0.13-1.19.amzn1.x86_64                                                                                         5/6
  Verifying  : php70-cli-7.0.13-1.19.amzn1.x86_64                                                                                         6/6

Installed:
  php70.x86_64 0:7.0.13-1.19.amzn1

Dependency Installed:
  php70-cli.x86_64 0:7.0.13-1.19.amzn1            php70-common.x86_64 0:7.0.13-1.19.amzn1        php70-json.x86_64 0:7.0.13-1.19.amzn1
  php70-process.x86_64 0:7.0.13-1.19.amzn1        php70-xml.x86_64 0:7.0.13-1.19.amzn1

Complete!
于 2017-01-19T01:31:41.363 回答
1

php 7 包名称是php70w。所以你可以做的是,在你的 linux 机器上安装一个 Webtatic repo 并从那里安装它。

rpm -ivh https://mirror.webtatic.com/yum/el6/latest.rpm
yum clean all
yum install --enablerepo=webtatic php70w
于 2016-01-19T11:04:26.967 回答
1

默认情况下,RedHat EC2 上只启用了几个 Yum Repo。要启用所有,只需键入

yum-config-manager --enable rhui-REGION-rhel-*

现在做一个 yum list,你应该可以看到这个:

百胜列表|grep php7

于 2018-10-23T22:49:27.237 回答
0

这里应该有几个答案;但是,当我安装我的时,它不会呈现页面并且会显示文本而不是呈现的 PHP。

为了解决这个问题,我跑了

sudo yum install php70-php-fpm

在那之后,一切都开始工作了。

于 2016-12-09T21:22:13.583 回答
0

以下是我在 Amazon Linux 上安装 PHP 7.1 的方法:

wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
yum-config-manager --enable remi-php71

wget ftp://195.220.108.108/linux/epel/6/x86_64/Packages/s/scl-utils-20120229-1.el6.x86_64.rpm
rpm -Uvh scl-utils-20120229-1.el6.x86_64.rpm 

yum install php71

https://gist.github.com/ihor/581d169886c29e7e17d01b0041167b01

于 2017-03-02T19:16:03.303 回答