部署两套apache-httpd,php不同版本,添加php模块

时间:2022-09-09 08:28:47

背景介绍:

两套php的web应用,A 应用需要php7版本,B应用需要php5。其中B需要mbstring功能


1. 安装两个apache-httpd
 注意1> 指定两个不同安装目录

./configure --prefix=/usr/local/apache-httpd 

./configure --prefix=/usr/local/apache-httpd2

其他参数和步骤参考另一个文章


注意2> 启停的时候,加上配置参数-f 

apapachectl start -f /usr/local/apache-httpd/conf/httpd.conf

apapachectl start -f /usr/local/apache-httpd2/conf/httpd.conf

注意3> 指定php的不同版本的php.ini(在安装php后,在配置即可)
在httpd.conf文件最后一行添加PHPIniDir /usr/local/php/lib/PHP.ini


2. PHP 两个版本安装

php5的版本下载:

wget http://cn2.php.net/distributions/php-5.5.38.tar.gz


注意1 > #./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache-httpd/bin/apxs --with-libxml-dir=/usr/local/libxml2(安装目录)  --with-mysqli=/usr/local/mysql/bin/mysql_config  

网上还有说加 --with-mysql=/usr/local/mysql,可是我的版本没有这个option,所以加上红色部分就可以

我部署的php7的版本,所以得使用--with-mysqli,如果是php5就使用--with-mysql

其他参考另一个文章

注意2> -prefix=/usr/local/php 指定两个路径php 和 php5

注意3>--with-apxs2=/usr/local/apache-httpd/bin/apxs 指定两个apache-httpd目录,标示apache-httpd关联php不通版本


3. 查看php的相关信息,判断apache-httpd关联的php是否正确

在apache-httpd的安装目录下htdocs目录下,新建index.php文件:

<?php 

phpinfo();

?>

访问http://ip:port/index.php  显示php的相关信息以及安装的模块和配置信息


4. PHP 安装模块mbstring

1> 进入php源码目录:

#cd /usr/src/php-5.5.38/ext/mbstring

2> 执行phpize,/usr/src/php-5.5.38/ext/mbstring 生成configure 

phpize在php的安装目录下的bin里面

#/usr/local/php/bin/phpize

报错:

Cannot find config.m4. Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module的

解决:

进入php源码包目录:cd  /usr/src/php-5.5.38/ext/openssl

执行命令:  cp ./config0.m4  phpize的目录/config.m4 即可

再次执行#/usr/local/php/bin/phpize:如下类似信息就ok了

Configuring for: 
PHP Api Version: 20041225 
Zend Module Api No: 20060613 
Zend Extension Api No: 220060519 

还有其他错误:

可能会报错:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.“,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install autoconf(Ubuntu Linux)

3> 安装mbstring(注意在/usr/src/php-5.5.38/ext/mbstring目录下哦

./configure --with-php-config=/usr/local/php5/bin/php-config (php的安装目录)

#make && make install

生成mbstring.so。此文件在/usr/src/php-5.5.38/ext/mbstring/modules/目录下


4> mbstring.so 拷贝到php的扩展库 根据php.ini中指示的extension_dir指向的目录中

修改php.ini中 extension_dir指向(自定义路径):php的安装目录/lib/php/extensions/no***/

mbstring.so 拷贝到此目录

5> 添加mbstring.so 到php.ini

echo ‘extension=mbstring.so' >>php安装目录/lib/php.ini

6>  重启apache-httpd  

#/usr/local/apache2/bin/apachectl restart -f  apache的配置文件

7> 通过index.php的phpinfo()查看mbstring  是否安装成功

/usr/local/php/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,这里会报错,可以根据错误信息去排查 (报错也没有影响mbstring)