mysql支持多版本php_CentOS下PHP多版本安装

本文介绍了在CentOS系统中如何安装和配置两个不同版本的PHP(5.4和7.2)。首先通过wget下载PHP源码,然后解压并安装依赖。使用`./configure`指定安装路径和配置参数,如启用fpm、mysqli等。编译并安装后,配置php.ini和php-fpm.conf文件,并设置环境变量。对于多版本共存,需要安装mod_fcgid.so模块,并在httpd.conf中配置fcgid模块。最后,配置虚拟目录和关闭SELINUX以避免403错误。
摘要由CSDN通过智能技术生成

1. 下载> 以5.4和7.2为例

wget -c http://museum.php.net/php5/php-5.4.16.tar.gz

wget -c http://cn.php.net/distributions/php-7.2.6.tar.gz

2. 解压tar -zxvf php-5.4.16.tar.gz

tar -zxvf php-5.4.16.tar.gz

3. 依赖安装yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib

libxml2-devel ncurses-devel bison \ libtool-ltdl-devel libiconv epel-release libmcrypt libmcrypt-devel mhash mcrypt pcre-devel openssl-dev

el freetype-devel libcurl-devel bzip2 bzip2-devel readline-devel

4. 安装> 进入安装目录

cd php-5.4.16

> 使用./configure --help查看编译支持的选项。

./configure --hlep

> 编译参数

./configure \

--prefix=/usr/local/php/php54 \

--with-config-file-path=/usr/local/php/php54/etc/ \

--with-config-file-scan-dir=/usr/local/php/php54/etc/ \

--enable-inline-optimization \

--enable-opcache \

--enable-session \

--enable-fpm \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-pdo-sqlite \

--with-sqlite3 \

--with-gettext \

--enable-mbregex \

--enable-mbstring \

--enable-xml \

--with-iconv \

--with-mcrypt \

--with-mhash \

--with-openssl \

--enable-bcmath \

--enable-soap \

--with-xmlrpc \

--with-libxml-dir \

--enable-pcntl \

--enable-shmop \

--enable-sysvmsg \

--enable-sysvsem \

--enable-sysvshm \

--enable-sockets \

--with-curl \

--with-curlwrappers \

--with-zlib \

--enable-zip \

--with-bz2 \

--with-gd \

--enable-gd-native-ttf \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-readline

> 编译安装

make && make install

注意事项:

如果写了不支持的选项,如php7里不支持--with-mysql=mysqlnd会提示:configure: WARNING: unrecognized options: --with-mysql

参数

--prefix 为安装路径

--with-config-file-path 为php.ini路径

--with-config-file-scan-dir 为php.ini 的扩展目录

--prefix=/usr/local/php

--with-config-file-scan-dir=/usr/local/php/etc/

一定要设置正确,多个PHP版本须编译安装在不同路径!!!

可选项:--with-fpm-user=www --with-fpm-group=www

这里面开启了很多扩展。如果这时候忘了开启,以后还能加上吗?答案是可以的。以后只需要进入源码的ext目录,例如忘了pdo_mysql,进入ext/pdo_mysql,使用phpize工具,像安装普通扩展一样即可生成pdo_mysql.so。

关于:--enable-safe-mode

开启的话php可以执行一下系统函数,建议关闭(可搜索受此函数影响的php函数)。

如果只需要配置某一个目录可以执行则 设置为on并指定 safe_mode_exec_dir=string 目录来执行系统函数。本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

safe_mode = off

php7编译不用加这个配置。编译比较耗内存和CPU,等待半小时左右编译完成。

5. 配置文件> 复制安装包里的php.ini到安装目录

cp php.ini-development /usr/local/php/php54/etc/php.ini

cp php-fpm.conf.default php-fpm.conf

> 配置php.ini

cd /usr/local/php/php54/etc

vim php.ini

# 不显示错误,默认

display_errors = Off

# 在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置),默认

log_errors = On

# 字符集,默认

default_charset = "UTF-8"

# 文件上传大小,默认值太小,建议修改10M

upload_max_filesize = 2M

# Maximum size of POST data that PHP will accept. 表单最大值,默认是8M,如果表单含有多图上传,大小可能不够。超过该大小后台收不到 表单数据

post_max_size = 8M

# 设置PHP的扩展库路径,,默认被注释了。

extension_dir = "./ext/"

# 如果不设置extension_dir,也可以直接写绝对位置:

# extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/redis.so

# 设置PHP的时区

date.timezone = PRC

# 开启opcache,默认是0

[opcache]

; Determines if Zend OPCache is enabled

opcache.enable=1

#函数禁用

disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,chmod,popen

#将php.ini里的cgi.fix_pathinfo设置为0,不然会有漏洞。

cgi.fix_pathinfo=0

#更多扩展库根据需要自行添加

> 配置php-fpm.conf,如果不用FastCGI进程管理器进行多版本共存,次步骤可以省略,安装也可以省略

vim php-fpm.conf

[global]

; Pid file

; Note: the default prefix is /usr/local/php/php54/var

; Default Value: none

; pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启

pid = run/php-fpm.pid

; Error log file

; If it's set to "syslog", log is sent to syslogd instead of being written

; in a local file.

; Note: the default prefix is /usr/local/php/php54/var

; Default Value: log/php-fpm.log

; 设置错误日志的路径,可以默认值

error_log = /var/log/php-fpm/error_54.log

; Log level

; Possible Values: alert, error, warning, notice, debug

; Default Value: notice

; Log等级,可以默认值

log_level = notice

; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.

; Default Value: yes

; 后台运行,默认yes,可以默认值

daemonize = yes

> 创建日志文件夹及文件

mkdir /var/log/php-fpm

touch /var/log/php-fpm/error_54.log

> 检查配置 如果出现诸如 test is successful 字样,说明配置没有问题

/usr/local/php/php54/sbin/php-fpm -t

6. 添加环境变量echo -e '\nexport PATH=/usr/local/php/php54/bin:/usr/local/php/php54/sbin:$PATH\n' >> /etc/profile

source /etc/profile

7. 其他版本PHP安装> 7.2版本编译参数

./configure \

--prefix=/usr/local/php/php72 \

--with-config-file-path=/usr/local/php/php72/etc/ \

--with-config-file-scan-dir=/usr/local/php/php72/etc/ \

--enable-inline-optimization \

--enable-opcache \

--enable-session \

--enable-fpm \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-pdo-sqlite \

--with-sqlite3 \

--with-gettext \

--enable-mbregex \

--enable-mbstring \

--enable-xml \

--with-iconv \

--with-mhash \

--with-openssl \

--enable-bcmath \

--enable-soap \

--with-xmlrpc \

--with-libxml-dir \

--enable-pcntl \

--enable-shmop \

--enable-sysvmsg \

--enable-sysvsem \

--enable-sysvshm \

--enable-sockets \

--with-curl \

--with-zlib \

--enable-zip \

--with-bz2 \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-readline

8. 编译安装mod_fcgid.so模块,多版本共存依赖此模块> 下载mod_fcgid.so

wget -c http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz

> 解压

tar -zxvf mod_fcgid-2.3.9.tar.gz

> 编译安装,利用APXS安装,如果找不到APXS,则安装httpd-devel

> APXS="赋值的路径为你的httpd目录下apxs文件位置"

> 编译安装完成之后会自动将其编入httpd目录下的modules里面

yum install -y httpd-devel

cd mod_fcgid-2.3.9

APXS=/usr/bin/apxs ./configure.apxs

make && make install

9. 配置http.conf> 加载fcgid模块

LoadModule fcgid_module /usr/lib64/httpd/modules/mod_fcgid.so

> 添加ExecCGI,允许使用mod_cgi模块执行CGI脚本。不添加会出现403错误

#

# Possible values for the Options directive are "None", "All",

# or any combination of:

# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

#

# Note that "MultiViews" must be named *explicitly* --- "Options All"

# doesn't give it to you.

#

# The Options directive is both complicated and important. Please see

# http://httpd.apache.org/docs/2.4/mod/core.html#options

# for more information.

#

Options Indexes FollowSymLinks ExecCGI

#

# AllowOverride controls what directives may be placed in .htaccess files.

# It can be "All", "None", or any combination of the keywords:

# Options FileInfo AuthConfig Limit

#

AllowOverride None

#

# Controls who can get stuff from this server.

#

Require all granted

> 设置fcgid相关配置

> AddHandler fcgid-script .fcgi .php #映射fcgi执行脚本

> 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出

> php-cgi每个进程的最大请求数

> php-cgi最大的进程数

AddHandler fcgid-script .fcgi .php

FcgidInitialEnv PHP_MAX_REQUESTS 1000

FcgidMaxRequestsPerProcess 1000

FcgidMaxProcesses 3

FcgidIOTimeout 120

FcgidIdleTimeout 120

FcgidMaxRequestLen 2097152

AddType application/x-httpd-php .php

10. 配置虚拟目录

ServerName localhost

DocumentRoot /var/www/demo

FcgidInitialEnv PHPRC "/usr/local/php/php54/etc"

FcgidWrapper "/usr/local/php/php54/bin/php-cgi" .php

CustomLog "/var/log/httpd/demo_access.log" common

ErrorLog "/var/log/httpd/demo_error.log"

11. 关闭selinux,否则会出现403错误vim /etc/selinux/config

> 将SELINUX=enforcing改为SELINUX=disabled

reboot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值