11.10 安装PHP5(上)
PHP会被放到最后安装:
php作为apache的一个扩展模块被安装,所以会被放到最后
PHP主流版本:5.6/7.1;
PHP7改动较大,部分软件不支持PHP7,目前使用PHP7可能遇到问题;
PHP7性能提升较大;
下载php压缩包:
[root@hyc-01-01 src]# wget
解压包:
[root@hyc-01-01 src]# tar zxvf php-5.6.30.tar.gz
初始化:
[root@hyc-01-01 src]# cd php-5.6.30
[root@hyc-01-01 php-5.6.30]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
--prefix 指定安装目录
--with-apxs2 是apache的一个工具,可以帮助用户自动安装、配置apache的扩展模块,使apache即使不停止或重启也可以被安装新的模块并立即支持
--with-config-file-path 指定配置文件所在路径,php的配置文件为php.ini
--with-mysql 指定mysql的路径
--with-pdo-mysql 这里的三个参数用于定义连接mysql的相关启动或函数
--with-mysqli 以上为三种不同的mysql的库(驱动),要想让php和mysql通信,需要编译出支持的模块,让mysql和php可以连接
--with-mysql和—with-mysqli:
有区别但功能相同,为了让php支持mysql;
老版本php中用—with-mysql(在7版本不被使用),新版本中用—with-mysqli;
其余的是指定php所需的一些模块
报错:
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
解决:
[root@hyc-01-01 php-5.6.30]# yum install -y libxml2-devel
报错:
configure: error: Cannot find OpenSSL's <evp.h>
解决:
[root@hyc-01-01 php-5.6.30]# yum install -y openssl-devel
报错:
If configure fails try --with-vpx-dir=<DIR>
configure: error: jpeglib.h not found.
解决:
[root@hyc-01-01 php-5.6.30]# yum install -y libjpeg-devel
报错:
checking for jpeg_read_header in -ljpeg... yes
configure: error: png.h not found.
解决:
[root@hyc-01-01 php-5.6.30]# yum install libpng-devel
报错:
If configure fails try --with-xpm-dir=<DIR>
configure: error: freetype-config not found.
解决:
[root@hyc-01-01 php-5.6.30]# yum install -y freetype-devel
报错:
checking for mcrypt support... yes
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决:
[root@hyc-01-01 php-5.6.30]# yum install -y epel-release
[root@hyc-01-01 php-5.6.30]# yum install -y libmcrypt-devel
由于需求的库文件在epel扩展源中,所以需要先安装epel扩展源
…
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
[root@hyc-01-01 php-5.6.30]# echo $?
0 执行成功
11.11 安装PHP5(中)
编译:
[root@hyc-01-01 php-5.6.30]# make
11.12 安装PHP5(下)
安装:
[root@hyc-01-01 php-5.6.30]# make install
Installing PHP SAPI module: apache2handler
/usr/local/apache2.4/build/instdso.sh SH_LIBTOOL='/usr/local/apache2.4/build/libtool' libphp5.la /usr/local/apache2.4/modules
/usr/local/apache2.4/build/libtool --mode=install install libphp5.la /usr/local/apache2.4/modules/
libtool: install: install .libs/libphp5.so /usr/local/apache2.4/modules/libphp5.so
libtool: install: install .libs/libphp5.lai /usr/local/apache2.4/modules/libphp5.la
libtool: warning: remember to run 'libtool --finish /usr/local/src/php-5.6.30/libs'
chmod 755 /usr/local/apache2.4/modules/libphp5.so
/将php相关的.so文件放到modules目录下/
[activating module `php5' in /usr/local/apache2.4/conf/httpd.conf]
/在配置文件中激活了php5模块/
…
查看php目录:
[root@hyc-01-01 php-5.6.30]# ls /usr/local/php/
bin etc include lib php
[root@hyc-01-01 php-5.6.30]# ls /usr/local/php/bin/ 该目录存放了php核心二进制文件
pear peardev pecl phar phar.phar php php-cgi php-config phpize
[root@hyc-01-01 php-5.6.30]# du -sh /usr/local/php/bin/php
36M /usr/local/php/bin/php
查看modules目录下php相关模块文件大小:
[root@hyc-01-01 php-5.6.30]# du -sh /usr/local/apache2.4/modules/libphp5.so
37M /usr/local/apache2.4/modules/libphp5.so
php与apache结合是通过.so文件实现的
查看php加载的模块:
[root@hyc-01-01 php-5.6.30]# /usr/local/php/bin/php –m
此处加载的均为静态模块;
php之所以这么大是由于增加了很多相关的功能;
查看apache的模块:
[root@hyc-01-01 php-5.6.30]# /usr/local/apache2.4/bin/httpd -M
…
status_module (shared)
autoindex_module (shared)
dir_module (shared)
alias_module (shared)
php5_module (shared)
发现列出的模块中有php5的模块;
说明php作为httpd的扩展模块的形式存在;
删除modules目录下的php的.so文件则apache无法支持php;
Apache的php模块文件:
[root@hyc-01-01 php-5.6.30]# ls -l /usr/local/apache2.4/modules/libphp5.so
-rwxr-xr-x 1 root root 37753464 8月 1 22:06 /usr/local/apache2.4/modules/libphp5.so
查看httpd.conf:
[root@hyc-01-01 php-5.6.30]# less /usr/local/apache2.4/conf/httpd.conf
…
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"
#
LoadModule php5_module modules/libphp5.so
…
不被加载的模块在文件中会被#注释
11.13 安装PHP7
查看php的相关信息:
[root@hyc-01-01 php-5.6.30]# /usr/local/php/bin/php –i
…
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => (none) 由于配置文件没有拷贝到对应路径下,所以会显示none
…
拷贝php配置文件到--with-config-file-path路径下:
[root@hyc-01-01 php-5.6.30]# cp php.ini-production /usr/local/php/etc/php.ini
[root@hyc-01-01 php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini
以上两个模板配置文件一个适合在生产环境(php.ini-production)中使用,另一个适合测试环境
[root@hyc-01-01 php-5.6.30]# /usr/local/php/bin/php –i
…
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => /usr/local/php/etc/php.ini
…
安装php7:
[root@hyc-01-01 src]# wget
解压包:
[root@hyc-01-01 src]# tar jxvf php-7.1.6.tar.bz2
初始化:
[root@hyc-01-01 php-7.1.6]# ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
标红的部分是与php5不一样的地方;
php7中没有—with-mysql参数;
编译:
[root@hyc-01-01 php-7.1.6]# make
安装:
[root@hyc-01-01 php-7.1.6]# make install
查看modules下的模块文件:
[root@hyc-01-01 php-7.1.6]# ls /usr/local/apache2.4/modules/libphp*
/usr/local/apache2.4/modules/libphp5.so /usr/local/apache2.4/modules/libphp7.so
[root@hyc-01-01 php-7.1.6]# du -sh /usr/local/apache2.4/modules/libphp7.so
37M /usr/local/apache2.4/modules/libphp7.so 模块文件大小37M
查看php7加载的模块:
[root@hyc-01-01 php-7.1.6]# /usr/local/php7/bin/php –m
Apache目前加载了两个php模块:
[root@hyc-01-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl –M
…
php5_module (shared)
php7_module (shared)
…
假如不想使用php7模块,可以在配置文件中将其注释掉:
[root@hyc-01-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf
…
LoadModule alias_module modules/mod_alias.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module modules/libphp5.so
#LoadModule php7_module modules/libphp7.so
…