zoukankan      html  css  js  c++  java
  • php7安装及和php5的共存

    http://blog.csdn.net/liuxinmingcode/article/details/50319145

    http://www.jb51.net/article/109228.htm

    centos7 下安装nginx,mysql都很方便,直接使用 yum install就可以。

    php添加源也可以使用yum安装。但有时会用到双php,所以手工安装。

    LNMP 

    FastCGI 是一个可伸缩地、高速地在HTTP server动态脚本语言间通信的接口。 

    HTTP server 是 Apache,nginx等,而动态语言包括php。

    Nginx -> PHP-FastCGI -> PHP

    Nginx中根据需求配置调用不同的PHP-FastCGI的访问端口,即可实现不同版本PHP共存了。

    一、已有php5

    二、安装php7

    1、下载 php.net (wget...) 解压 (tar zxvf...)

    2、安装依赖 

    yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel 
    libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
    gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

    3、配置 

      ./configure 默认配置 可添加修改

      可用 ./configure -h 查看所有选项

      7.3.3 的参见 https://www.cnblogs.com/mitang/p/10625444.html 

    3.1、设置不同的安装目录,共存

      安装目录 –prefix=/usr/local/php7 #默认/usr/local/php, 多版本共存,需要修改一下

      配置文件 --with-config-file-path= #相应的变化,默认 /etc/php 可以改到安装目录下etc目录

    3.2、添加模块 -with-... 即可,重要是开启fpm -enable-fpm等

    3.3、7.1要求openssl版本,需要先升级openssl, (openssl version -a 查看openssl目录)

       --with-openssl=/usr/local/ssl

    update: centos7 + php7.2 需要设置--with--openssl-dir=/usr... 才通过
    7.3.3 默认安装的libzip也出错,手工重新安装。(7.3出现多个问题)

    ./configure --prefix=/alidata/server/php71 --with-config-file-path=/alidata/server/php71/etc --with-config-file-scan-dir=/alidata/server/php71/etc/php.d --enable-zip --enable-inline-optimization --enable-sockets --enable-soap --enable-session --enable-opcache --enable-mysqlnd --enable-fpm --disable-fileinfo --enable-mbstring
    --with-mcrypt #7.3.3 configure -h 已经没有该设置项
    --with-mhash 
    --with-mysqli 
    --with-pdo-mysql 
    --with-gd 
    --with-jpeg-dir #jpeg修改支持
    --with-freetype-dir #freetype 字体支持?
    --with-iconv --with-zlib --with-curl
    --with-openssl
    --with-openssl-dir=/usr/local/ssl

    4、编译 make 即可,可能会报错:make: *** [sapi/cli/php] error 1 ,使用   

     make ZEND_EXTRA_LIBS='-liconv'

    5、安装

    make install 

    6、配置文件

    6.1、php.ini 从源代码目录下 到设定的配置目录(见3.1 另见补记4)

    cp php.ini-production /路径/php7/etc/php.ini #复制php.ini配置

    6.2、php-fpm配置文件修改(安装目录下,复制一份)

    cp etc/php-fpm.conf.default etc/php-fpm.conf
    cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

    6.3、修改监听端口 #注意多版本不相同

          www.conf  配置 linsten 127.0.0.1:9001 

    6.4 修改php.ini

      修改时区 data.timezone = “Asia/Shanghai” 

    7 启动php-fpm

    复制源文件目录下php-fpm启动脚本,(为了多版本共存,改下文件名),用脚本启动服务
    cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm chmod 755 /etc/init.d/php-fpm
    /etc/init.d/php7-fpm start  #开启start 关闭stop

     此处启动方法7.2依然可以使用,但推荐直接下面方法:

    /usr/local/php7/sbin/php-fpm #启动

      pkill/killall php-fpm  #关闭

      #/usr/local/php7/sbin/php-fpm -h 查看帮助,-i是信息,-v是版本等

    8、环境变量 (可选: 将目录加入路径,直接可以使用命令,不需要在连接到 /usr/bin 等目录

    vi /etc/profile

    在末尾追加

    PATH=$PATH:/usr/local/php/bin
    export PATH

    执行命令使得改动立即生效

    source /etc/profile

    或者使用一步到位脚本:

    echo -e '
    export PATH=/路径/php7/bin:/路径/php7/sbin:$PATH
    ' >> /etc/profile && source /etc/profile

    9、Nginx配置FastCGI 访问 PHP7 (按需配置)

    location ~ .*.(php|php5)?$
            {
                fastcgi_pass  127.0.0.1:9001; #注意此端口,决定使用的php版本
                fastcgi_index index.php;
                include fcgi.conf;
            }

    即可正常访问。

    补记

    1、遇到 session 的开启问题,查网络是session.save_path 的设置问题,但我php5.5也是默认没设置

         最后,直接清空 tmp目录后正常(1、so上有人说tmp满了(不太可能,2、session文件冲突)

    2、php7默认模块比较少,需自己添加。

        参考说明:https://www.cnblogs.com/HKUI/p/5137115.html

     3、 init.d/php-fpm脚本 支持的操作:7.2以后使用安装目录下的 sbin/php-fpm

    • start,启动PHP的FastCGI进程。
    • stop,强制终止PHP的FastCGI进程。
    • quit,平滑终止PHP的FastCGI进程。
    • restart, 重启PHP的FastCGI进程。
    • reload, 重新加载PHP的php.ini。
    • logrotate, 重新启用log文件。

    4、Php.ini位置修改方法如下:

    php默认php.ini文件放在/usr/local/lib内,可以在编译的时候使用--with-config-file-path参数来修改php.ini的存放位置,例如你可以使用--with- config-file-path=/etc把它存放到/etc下面,然后可以从源码包中拷贝php.ini到/etc/php.ini。

    注意,不要忘记修改时区 data.timezone = “Asia/Shanghai” 

  • 相关阅读:
    [C++11新特性] weak_ptr和unique_ptr
    [C++11新特性] shared_ptr共享的智能指针
    VS2019 Qt5.15.2 开发环境搭建
    【C++11 新特性】Lambda表达式(三)
    【C++11 新特性】bind(二)
    【C++11 新特性】function(一)
    【IPC 进程间通信】有名管道的简单实现
    【IPC 进程间通信】常用进程间通信方式总结
    Qt 文件常见操作管理类
    【GitHub 开源分享】QML 在线预览工具
  • 原文地址:https://www.cnblogs.com/mitang/p/5394359.html
Copyright © 2011-2022 走看看