首先,我们简单了解一下什么是PHP,PHP(Hypertext Preprocessor 超文本预处理器) 和Java语言一样,PHP也是属于高级语言,并不能直接在操作系统上运行。Java运行需要虚拟机,PHP运行也是需要Zend Engine引擎。与Java不同的是,Java属于编译与解析性语言,而PHP只是是解析性语言。所以,我们可以从语言性质上简单看出,Java运行之前先通过编译形成.class文件,所以运行效率会更快,PHP编写程序后检查语法通过,就可以直接运行,从而开发效率会更快。
去年,刚刚开始从Java转学PHP的时候,PHP的弱类型特效深深吸引了我,在Java中我们经常会遇到各种类型转换,或者考虑用什么样的类型去存储数据,这种严格的编程非常局限了开发的效率,当然这个缺点也是它的优势之处,更加严格的类型定义,让Java获得更快的运行速度。然后,我记得学到PHP+Mysql时候,我都非常惊讶!为什么PHP对数据库的操作这么简单,是我写错了吗?因为当初学Java的时候,Mysql的各种jar包搞到吐血。真的PHP的开发做得非常好,所以很多学PHP的程序员都会开一个玩笑:PHP是世界上最好的语言。其实说的并不是其他语言不好,而是作为程序员都喜欢那种自动化,更少的人工的方法去开发和维护程序。
以上都是个人的理解,不一定是正确的,如果说的不对,希望大家帮助指正。
回到正题:安装PHP,我们讲的安装不是在windows重复点击下一步的过程,这样就太没劲了。我今天想说的是,如何在Linux编译安装PHP,并理解PHP扩展。
在上次笔记中,我已经准备了Linux系统,并且配置好网络。
安装PHP,并开启FPM
# 更新系统
yum -y update
升级所有包,改变软件设置和系统设置,系统版本内核都升级
reboot
# 安装基础软件
yum -y install vim wget w3m gcc gcc-c++ make automake gdb cmake kernel-devel kernel-headers lsof zip unzip xz git tree nmap mailx tcpdump sysstat screen dtach ntp telnet man
# 安装依赖库
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel freetype-devel bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* pcre-devel zlib-devel autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* perl gettext pcre-devel zlib-devel libXpm-devel libXpm icu icu4j libicu* wget lrzsz mysql-devel unzip libaio rsync openssh-clients ntp
# 安装 PHP
# 安装PHP基础环境
# PHP 配置文件:/usr/local/php/etc/php.ini
# PHP-FPM 配置文件:/usr/local/php/etc/php-fpm.conf
# 服务控制:service php-fpm (start|stop|restart|reload)
# 安装PHP依赖库
cd /usr/local/src
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7/
./configure
make
make install
cd libltdl/
./configure --enable-ltdl-install
make
make install
yum install mysql-devel
ln -s /usr/lib64/libXpm.so* /usr/lib/
mkdir /usr/lib/mysql
ln -s /usr/lib64/mysql/libmysqlclient* /usr/lib/mysql
# 安装PHP
#wget http://tw1.php.net/get/php-5.4.26.tar.gz/from/this/mirror
#tar zxf php-5.4.26.tar.gz
#cd php-5.4.26
# 下载src
wget http://tw1.php.net/get/php-5.6.21.tar.gz/from/this/mirror
mv mirror php-5.6.21.tar.gz
# 解压
tar zxf php-5.6.21.tar.gz
cd php-5.6.21
# 配置参数
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-libxml-dir \
--with-pcre-dir \
--with-mcrypt \
--with-openssl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-xpm-dir \
--with-gettext \
--with-freetype-dir \
--with-bz2 \
--with-iconv-dir \
--with-zlib \
--with-zlib-dir \
--with-curl \
--with-xmlrpc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-icu-dir=/usr \
--enable-pcntl \
--enable-intl \
--enable-sockets \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-ftp \
--enable-zip \
--enable-calendar \
--enable-mbstring \
--enable-exif \
--enable-soap \
--enable-wddx \
--enable-bcmath \
--enable-fd-setsize=4096 \
--disable-short-tags \
--disable-ipv6
# 编译
make
# 安装
make install
# 创建配置文件
#cp /usr/local/src/php-5.4.26/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/src/php-5.6.21/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# 添加新用户/用户组
groupadd www
useradd -r -g www www -s /sbin/nologin
# 创建 php 运行所需要目录并设置权限
mkdir /var/run/php
mkdir /var/log/php
chown -R www:www /var/run/php/
chown -R www:www /var/log/php/
# 设置 php-fpm 配置,修改以下参数项。
# vim /usr/local/php/etc/php-fpm.conf
pid = /var/run/php/php-fpm.pid
error_log = /var/log/php/error.log
user = www
group = www
listen = 127.0.0.1:9000
pm = static
# php-fpm 加入系统服务并开机启动
#cp /usr/local/src/php-5.4.26/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /usr/local/src/php-5.6.21/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# vim /etc/init.d/php-fpm
#php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_fpm_PID=/var/run/php/php-fpm.pid
# 编辑 PHP 相关路径(/etc/init.d/php-fpm)
chmod u+x /etc/init.d/php-fpm
chkconfig --add php-fpm
service php-fpm start
chkconfig php-fpm on
ps -d
表示我们正常安装成功了,已经启动了php-fpm.
PHP安装完成!