【问题标题】:How to install PHP 7 on EC2 t2.micro Instance running Amazon Linux Distro如何在运行 Amazon Linux Distro 的 EC2 t2.micro 实例上安装 PHP 7
【发布时间】:2016-01-19 09:59:04
【问题描述】:

我想在 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) )

【问题讨论】:

  • 你能接受我的回答吗? :)

标签: linux amazon-web-services amazon-ec2 installation-package


【解决方案1】:

您现在可以使用官方的 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 网络服务器

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)的传入连接,否则您的请求将超时。

【讨论】:

  • 不,?&gt; 只有在 PHP 代码之后添加更多 html 代码时才需要。我从不使用 ?&gt; 结束包含 php 的文件的一个原因是它不会在最终的 html 中添加意外的空行。
  • 我想知道这一点,因为我在让 phpinfo() 工作时遇到问题。原来我不得不重新安装 Apache 和 PHP 7。谢谢!
  • 大家好,他们遇到了他的错误:没有可用的包 httpd24。
  • 运行这些命令后,我必须执行 yum remove php5* 来强制删除它,然后一切才开始工作。否则 yum remove php* 没有删除它,导致没有 php 工作。
  • 效果很好。仅供参考,您现在可以使用 php71。
【解决方案2】:

我在我的实例上运行了这个。您需要 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

【讨论】:

  • 在我使用 CloudFormation 为 php7 测试平台快速建立一个站点之后,这个答案非常有用。其他答案在我的情况下不起作用,而是导致 apache (httpd) 根本看不到 php。
【解决方案3】:

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

amazon-linux-extras install php7.2

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

amazon-linux-extras list

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 对我来说,在 yum 中启用“amzn-updates”回购后,它就可以正常工作了
    【解决方案5】:

    其他答案似乎只适用于 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
    

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

    LoadModule mpm_event_module modules/mod_mpm_event.so
    

    通过在/etc/httpd/conf/httpd.conf中添加以下行来指示apache将所有php请求传递给php-fpm

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

    使用 sudo service httpd restart 重启 apache。如果一切正常,您应该能够通过请求包含phpinfo() 的 php 文件来验证安装。

    如果您现有的 shell 脚本使用 php 的 cli 解释器并因此以 #!/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

    【讨论】:

    • 小提示:改用“service php70-php-fpm ...”命令。 ProxyPassMatch 适用于 Apache 2.2(在 EPEL 中使用 mod_proxy_fcgi)和 Apache 2.4,但在最新版本中,使用 SetHandler 进行代理更简单。
    【解决方案6】:

    我在一个已经有 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
    

    【讨论】:

    • 通过将任何 php70 更改为 php71(7.0 到 7.1)也可以按照这些步骤升级到 7.1(现在可用)
    • 谢谢。像 php72 的魅力一样工作。
    【解决方案7】:

    这很简单。只是:

    sudo amazon-linux-extras install -y php7.2
    

    【讨论】:

      【解决方案8】:

      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
      

      【讨论】:

      • 加载的插件:langpacks、update-motd 没有包 httpd24 可用。没有可用的包 php70。没有可用的包 mysql56-server。没有可用的包 php70-mysqlnd。
      【解决方案9】:

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

      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
      

      【讨论】:

      • 对我来说,Apache 没有执行 PHP,它显示了 phpcode
      【解决方案10】:

      这个线程帮助我接近完成它,我正在分享对我有用的命令和输出。

      Amazon Lightsail 和 Amazon Linux (amzn1.x86_64) 上,以下命令列表帮助我摆脱了 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(请注意,在执行此操作之前,您应该备份您的 confconf.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!
      

      【讨论】:

      • 我会这样做,因为我喜欢只运行官方存储库。
      • 它不会让 php 被 Apache 执行
      【解决方案11】:

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

      rpm -ivh https://mirror.webtatic.com/yum/el6/latest.rpm
      yum clean all
      yum install --enablerepo=webtatic php70w
      

      【讨论】:

      • 我试过那个。它给了我这个... --> 完成依赖解决错误:包:php70w-7.0.2-1.w7.x86_64(webtatic)要求:httpd-mmn = 20120211x8664 已安装:httpd-2.2.31-1.6.amzn1。 x86_64 (@amzn-main) httpd-mmn = 20051115 可用:httpd24-2.4.16-1.62.amzn1.x86_64 (amzn-main) httpd-mmn = 20120211x86-64 httpd-mmn = 20120211 可用:httpd24-2.4.16- 1.63.amzn1.x86_64 (amzn-updates) httpd-mmn = 20120211x86-64 httpd-mmn = 20120211
      • 现在这些是您必须手动安装的一些依赖项错误。检查包版本并配置
      • @Siddharthsharma 我试过了,它适用于 apache,但在 CLI 上显示 php not found
      • ls -l $(which php)的输出是什么
      【解决方案12】:

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

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

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

      yum list |grep php7

      【讨论】:

        【解决方案13】:

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

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

        sudo yum install php70-php-fpm

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

        【讨论】:

          【解决方案14】:

          这是我在 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

          【讨论】:

          • "php71" 是 "remi-safe" 中可用的 SCL,如果你想要基本包,你只需要启用 "remi-php71" 存储库。见rpms.remirepo.net/wizard
          • 对,没注意到。问题是由于某种原因我无法从可用的存储库中安装scl-utils
          • wget ftp://195.220.108.108/linux/epel/6/x86_64/scl-utils-20120229-1.el6.x86_64.rpm 应改为wget ftp://195.220.108.108/linux/epel/6/x86_64/Packages/s/scl-utils-20120229-1.el6.x86_64.rpm
          猜你喜欢
          • 2020-08-08
          • 2015-09-15
          • 2017-09-22
          • 1970-01-01
          • 1970-01-01
          • 2012-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多