在 CentOS 7 上升级到 php 7 失败


Failed upgrade to php 7 on CentOS 7

我试图在我的 CentOS 7 上使用这个 toutorial 将 php 5.4 升级到 7:https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-centos-7

我做了这个:

sudo yum remove php-cli mod_php php-common

[删除了所有内容 - 完成]

sudo yum install mod_php70u php70u-cli php70u-mysqlnd 

"无事可做"

我所有的网站都是: 502 Bad Gateway/nginx

在 Plesk 中,我看到这个:

由于配置模板中的错误,未创建 Apache Web 服务器的新配置文件: [2016 年 7 月 10 日星期日 20:52:21.734150][所以:警告][PID 11833]AH01574:模块actions_module已加载,正在
跳过 [2016 年 7 月 10 日星期日 20:52:21.735241][所以:警告][PID 11833]AH01574:模块 headers_module 已加载,正在跳过 [周日 Jul 10 20:52:21.735398 2016] [so:警告] [PID 11833] AH01574:模块logio_module已加载,跳过
[周日 7 月 10 日 20:52:21.735945 2016][所以:警告][PID 11833]AH01574:模块suexec_module已经加载,跳过AH00526:无法访问/etc/httpd/conf/plesk.conf.d/roundcube.conf 第 33 行的语法错误:无法访问包装器/var/www/cgi-bin/cgi_wrapper/cgi_wrapper:(2)没有这样的文件或目录。详细的错误描述已通过电子邮件发送给您。请解决问题,然后单击此处再次生成损坏的配置文件或单击此处生成所有配置文件。请参阅配置疑难解答中的详细信息

请帮忙。

如果您使用的是NGINX。 作为网络服务器,这是有效的。 对 Apache 的说明非常相似。 更改的部分是最后一部分。

我必须使用NGINX/APACHE设置服务器,以支持PHP版本(从5.3到php7)数组。

我们目前使用的服务器是NGINX(具有更好的性能和更低的内存占用)

为了拥有多个版本,我从源代码编译 PHP,并在 127.0.0.1:port 中监听 php 进程

ex: fastcgi_pass   127.0.0.1:9053; (php53)
    fastcgi_pass   127.0.0.1:9054; (php54)
    fastcgi_pass   127.0.0.1:9055; (php55)
    fastcgi_pass   127.0.0.1:9056; (php56)
    fastcgi_pass   127.0.0.1:9070; (php57)

您需要安装所有 depedencies 才能从源代码编译 PHP:

yum update -y
yum install epel-release -y    
yum update -y    
yum group install "Development Tools" -y
yum install wget curl nano libmcrypt-devel bzip2-devel curl-devel db4-devel libjpeg-devel libpng-devel libXpm-devel gmp-devel libc-client-devel openldap-devel unixODBC-devel postgresql-devel sqlite-devel net-snmp-devel libxslt-devel pcre-devel mysql-devel postgresql-devel libxslt-devel mariadb-client freetype-devel.x86_64 libxml2-devel -y
yum install httpd php php-xml php-mbstring php-mcrypt php-pdo -y 
yum install php-devel php-pear mysql-devel httpd-devel -y

然后,您将需要下载所需的php版本。将 PHP7 下载到服务器的/opt/文件夹中。

http://php.net/get/php-7.0.8.tar.gz/from/a/mirror

(在服务器中,我更喜欢在/opt/文件夹中下载和编译 PHP。

cd /opt/

提取源:

tar xzvf php-7.0.*.tar.gz (the version you download)

CD 到 PHP 文件夹中:

cd php-7.0.8/

配置 php。

./configure --prefix=/opt/php7 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex  --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=apache --with-fpm-group=apache --with-libdir=lib64     --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

然后:

 make && make install
    cd sapi/fpm
    #create start/stop php-php script
    cp init.d.php-fpm /etc/init.d/php7
    #give perms
    chmod 775 /etc/init.d/php7
    #move php-fpm configuration file to right location
    mv /opt/php7/etc/php-fpm.conf.default /opt/php7/etc/php-fpm.conf 
    mv /opt/php7/etc/php-fpm.d/www.conf.default /opt/php7/etc/php-fpm.d/www.conf
    #configure php-fpm to listen to 9070 port
    sed -i 's/^listen =.*/listen = 127.0.0.1:9070/' /opt/php7/etc/php-fpm.d/www.conf
   #copy php.ini file to right location
    cp /opt/php-7.0.8/php.ini-production /opt/php7/lib/php.ini
    #Give perms
    chmod 777 /opt/php7/lib/php.ini    
    # start PHP7 automatically
    chkconfig --add php7
    chkconfig --level 345 php7 on

然后创建 NGINX 配置文件。

server {
    listen  80;
    server_name test.com www.test.com;
    location / {
        root  /var/www/html/7;
        index  index.php index.html index.htm;
        try_files $uri $uri/ =404;
    }       
     location ~ '.php$ {
            root           /var/www/html/7;
            fastcgi_pass   127.0.0.1:9070;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

}

最后:

service nginx stop
service nginx start

你已经准备好了...希望这有帮助。详细信息: https://github.com/dferrans/Centos-7-nginx-stack-multiple-php

您是否已经安装了所有 RPM?如果是这样,请尝试以下操作:

yum install php70u php70u-fpm php70u-fpm-nginx php70u-mbstring php70u-json -y