从Remi repo安装PHP7


13

我从Remi repo安装了PHP7

sudo yum -y install httpd
sudo yum -y install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 
sudo rpm -Uvh remi-release-6*.rpm
sudo yum -y --enablerepo=remi,remi-test install php70
scl enable php70 'php -v'
sudo ln -s /usr/bin/php70 /usr/bin/php

它正在通过CLI运行。现在我想使其与apache一起工作,但我找不到这样的方法作为第二个参数传递给LoadModule

LoadModule php7_module        unknown_path  
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

这是使PHP7与apache2配合使用的正确方法吗?


php7.zend.com/install-ubuntu.php 适用于Centos7,但可能会有所帮助。
angelcool.net 2015年


考虑到PHP7的预发行状态,它似乎牢牢属于“不受支持的软件”关闭类别。
ceejayoz

1
find / -iname '*php*.so':)
Marki

Answers:


23

默认情况下,“ php70”(软件集合)不安装mod_php。

yum install php70-php

并检查您是否没有其他mod_php(例如“ php”基本软件包提供的那个)


嗨,雷米。我刚安装在centos 6.7(yum install php70-php-pear php70-php-bcmath php70-php-pecl-jsond-devel php70-php-mysqlnd php70-php-gd php70-php-common php70-php-fpm php70-php-intl php70-php-cli php70-php php70-php-xml php70-php-opcache php70-php-pecl-apcu php70-php-pecl-jsond php70-php-pdo php70-php-gmp php70-php-process php70-php-pecl-imagick php70-php-devel php70-php-mbstring)上,尽管安装正常进行,但我的网站仍在php 5.6中提供。如何将nginx“切换”到php 7?
Codemonkey

由于fcgi超过了127.0.0.1:9000,所以我假设我需要以某种方式禁用该端口上的5.6,并使之成为php 7 ...但是我的脑子一片空白!我猜想如果我先卸载所有5.6的东西,然后再安装7,那还能解决吗?
Codemonkey

如果您只需要一个php版本,则可以禁用“ php-fpm”,而使用“ php70-php-fpm”。如果两者都需要,请在池定义和nginx配置中更改listen选项。
Remi Collet

2
太好了,谢谢。对于在同一条船上其他人这样做的伎俩: service php-fpm stopservice php70-php-fpm start。您会在中找到php.ini和php-fpm conf文件,/etc/opt/remi/php70/而不仅仅是在中etc
Codemonkey

@RemiCollet我使用remo仓库安装了php 5.6。知道如何将5.6升级到7吗?我只需要一个版本。坦斯克
PHPst

6

仅供参考,对于那些希望使用remi-php70资源库安装PHP 7的人(现在已经发布了PHP 7.0.0),可以使用已知和喜爱的相同软件包名称来安装软件包,例如:

  • php
  • php-cli
  • php-common
  • php-devel
  • php-fpm
  • php-gd
  • php-mbstring
  • php-pdo
  • 等等

怎么样?php54似乎是remi-release-7.rpm的默认值?
giorgio79 '16

1
@ giorgio79,如果您启用remi-php70.repo和禁用了remi repos中的所有其他php版本,则yum install php-fpm默认情况下使用7.0 运行,但不适用于7.1(或其他未来发行版)
sofly

2

PHP70似乎也可以将所有内容安装在/ etc / opt / remi / php70 /下:

您需要运行:

source /opt/remi/php70/enable

3
您应该详细说明。为什么需要运行它?它有什么作用?它如何帮助OP查找Apache模块?
Marki

如果PHP 7仍然无法正常工作,则需要运行它以使其正常工作。它将在apache中添加一行以加载php70模块。
user1455180

如果您注销并重新登录,它将停止工作。这是我面临的问题。
爱德华

在我的7.4安装上,这个人到底烧死了我什么!根据需要添加了PATH条目,并且可以正常工作。嘘,不知道为什么要这样设计!
emmdee

1

如果您安装了较旧的php版本(例如5.6),请不要忘记执行以下操作:

cd /etc/httpd/conf.d/
mv php.conf php.conf.dis

重新启动Apache,应该这样做。


1
奇怪的是,经过几个小时的摸索之后,此解决方案为我修复了该问题。
giorgio79 '16

1

对于尝试在Centos 6.7上从PHP 5.6升级到7.0.1的其他用户:

我今天设法像@mbalparda列出的那样使它正常工作,但是没有使用epel-release(尽管启用了一些epel仓库并且正在使用中)

我从IUS(https://ius.io/GettingStarted/)回购(https://centos6.iuscommunity.org/ius-release.rpm)安装了php 5.6 ,因此我通过以下方式将其删除:

# yum list installed | grep php5
php56u.x86_64          5.6.14-1.ius.centos6
php56u-cli.x86_64      5.6.14-1.ius.centos6
php56u-common.x86_64   5.6.14-1.ius.centos6
...

所以

# yum erase php56u php56u-cli php56u-common php56u-mcrypt php56u-mysqlnd ...

接下来是列出的命令:

# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 
# rpm -Uvh remi-release-6.rpm
# yum install php70-php php70-php-cli php70-php-common php70-php-mcrypt php70-php-mysqlnd ...
# scl enable php70 'php -v'
# sudo ln -s /usr/bin/php70 /usr/bin/php
# service httpd restart

在同一命令中混合使用php70- *和php56u- *软件包似乎很奇怪。可能是不需要的。而且,如果要使用单个版本,则使用SCL并不是最简单的解决方案。最简单的是启用remi-php70存储库和“ yum更新”。记得尝试使用新的向导:rpms.remirepo.net/wizard
Remi Collet

@RemiCollet感谢您指出错别字,对帖子进行了编辑以反映相同的内容-我的意思是编写php70-php-mysqlnd等,但复制粘贴/编辑错误...此外,向导似乎很棒。谢谢!
site80443 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.