首先,我们简单了解一下什么是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
# 更新系统
升级所有包,改变软件设置和系统设置,系统版本内核都升级
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
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
#tar zxf php-5.4.26.tar.gz
#cd php-5.4.26
# 下载src
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安装完成!
- 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置
第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本 uwsgi- ...
- Linux下Nginx的安装(二)
一.安装Nginx ## 安装前准备 ## #GNU编译器集合 #Nginx编译需要PCRE #在Nginx的各种模块中需要使用gzip压缩 #在Nginx中,如果服务器提供安全网页时则会用到Open ...
- mysql 自动备份和nginx自动安装脚本
一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...
- nginx 的安装
一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl ...
- nginx笔记----安装
nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...
- Linux下Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
- Nginx的安装及反向代理设置
因为项目的缘故,接触到了Nginx的安装和反向代理设置,和大家分享下. 一.Nginx的下载.安装cd /homewget http://nginx.org/download/nginx-1.0.5. ...
- nginx初级安装配置
nginx初级安装配置 转自:(lykyl原创)http://www.cnblogs.com/lykyl/archive/2012/11/21/2781077.html 实验环境:系统 CENTOS5 ...
- Linux下,Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
- Nginx基础学习(一)—Nginx的安装
一.Nginx介绍 1.什么是Nginx? Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开 ...
随机推荐
- Centos中安装code blocks
CentOS下面安装Codeblocks不像Ubuntu下面那样轻松,可以直接在软件中心安装.这里好多信赖我们要自己安装,也不是很麻烦. 1.先安装gcc和gcc++,这个可以直接安装 # yum i ...
- 自定义的string类
头文件Hi_String.h #include<iostream> #include<string.h> using namespace std; class Hi_Strin ...
- FlexComboBoxTree
在我的CSDN资源中有项目工程文件.下载导入工程即可看到效果,下面是地址. http://download.csdn.net/detail/cym_lmy/6326053 MyCombBoxTree1 ...
- URLConnection的连接、超时、关闭用法总结
Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET与POST请求.二者的区别在于: a:) get请求可以获取静态页面,也可以把 ...
- Git 上传本地命令
1.首先建立一个文件夹用以测试 2.在test中写入一个main.c的文件 其内容如下: 3.然后就建立一个git仓库了 4.然后就是把内容加进去了,上传上去 5.然后我们看下git log的信息 6 ...
- Js异步级联选择框实践方法
HTML: <li> <span>所在地区:</span> <select name="prov" id="ddl_prov&q ...
- 数组,集合 转成DataTable 方法
public static DataTable ToDataTable(IList p_List) { DataTable _DataTable = new DataTable(); if (p_Li ...
- JS操作URL
function getQueStr(url, ref) //取获参数值 { ); ) { var arr = str.split('&'); for (i in arr) { ] == re ...
- keycode(来自互联网)
- html布局
1.div <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...