PHP语言的概念
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 [1-2] PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
PHP 语言的优点
- 流行,容易上手
PHP,驱动2亿多个网站,被超过81.7%的公共网站在服务器端所采用。PHP 将结构内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。 - 开发职位很多
在服务器端的网站编程中,PHP 言会用户找到工作。很多互联网相关企业都在使用 PHP 语言开发框架,所以说市场对PHP语言开发程序员的需求还是比较大的。 - 持续发展
PHP语言在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。在7.0之后的版本,一直提供更高性能的应用。 - 可植入性强
PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。 - 拓展性强
PHP语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。
安装PHP环境
- 环境准备
setenforce: SELinux is disabled
[root@php ~]# systemctl stop firewalld
[root@php ~]# yum install -y gcc gcc-c++ libxml2-devel libcurl-devel openssl-devel bzip2-devel
Loaded plugins: fastestmirror
local | 3.6 kB 00:00:00
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package bzip2-devel.x86_64 0:1.0.6-13.el7 will be installed
---> Package gcc.x86_64 0:4.8.5-28.el7 will be installed
--> Processing Dependency: libgomp = 4.8.5-28.el7 for package: gcc-4.8.5-28.el7.x86_64
--> Processing Dependency: cpp = 4.8.5-28.el7 for package: gcc-4.8.5-28.el7.x86_64
--> Processing Dependency: libgcc >= 4.8.5-28.el7 for package: gcc-4.8.5-28.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-28.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-28.el7.x86_64
---> Package curl.x86_64 0:7.29.0-25.el7.centos will be updated
talled
--> Processing Dependency: libselinux(x86-64) = 2.5-12.el7 for package: libselinux-devel-2.5-12.el7.x86_64
--> Processing Dependency: libsepol-devel(x86-64) >= 2.5-6 for package: libselinux-devel-2.5-12.el7.x86_64
--> Processing Dependency: pkgconfig(libsepol) for package: libselinux-devel-2.5-12.el7.x86_64
--> Processing Dependency: pkgconfig(libpcre) for package: libselinux-devel-2.5-12.el7.x86_64
---> Package libverto-devel.x86_64 0:0.2.5-4.el7 will be installed
---> Pac for package: systemd-219-57.el7.x86_64
--> Processing Dependency: liblz4.so.1()(64bit) for package: systemd-219-57.el7.x86_64
--> Running transaction check
---> Package lz4.x86_64 0:1.7.5-2.el7 will be installed
---> Packag local 16 M
gcc-c++ x86_64 4.8.5-28.el7 local 7.2 M
libcurl-devel x86_64 7.29.0-46.el7 local 300 k
libxml2-devel x86_64 2.9.1-6.el7_2.3 local 1.0 M
openssl-devel x86_64 1:1.0.2k-12.el7 local 1.5 M
Updating:
systemd x86_64 219-57.el7 local 5.0 M
Installing for dependencies:
cpp x86_64 4.8.5-28.el7 local 5.9 M
glibc-devel x86_64 2.17-222.el7 local 1.1 M
glibc-headers x86_64 2.17-222.el7 local 678 k
kernel-headers x86_64 3.10.0-862.el7 local 7.1 M
keyutils-libs-devel x86_64 1.5.8-3.el7 local 37 k
krb5-devel x86_64 1.15.1-18.el7 local 269 k
libcom_err-devel x86_64 1.42.9-11.el7 local 31 k
libkadm5 x86_64 1.15.1-18.el7 local 175 k
libmpc x86_64 1.0.1-3.el7 local 51 k
libselinux-devel x86_64 2.5-12.el7 local 186 k
libsepol-devel x86_64 2.5-8.1.el7 local 77 k
libstdc++-devel x86_64 4.8.5-28.el7 local 1.5 M
libverto-devel x86_64 0.2.5-4.el7 local 12 k
lz4 x86_64 1.7.5-2.el7 local 98 k
mpfr x86_64 3.1.1-4.el7 local 203 k
pcre-devel x86_64 8.32-17.el7 local 480 k
xz-devel x86_64 5.2.2-1.el7 local 46 k
zlib-devel x86_64 1.2.7-17.el7 local 50 k
Updating for dependencies:
curl x86_64 7.29.0-46.el7 local 268 k
e2fsprogs x86_64 1.42.9-11.el7 local 699 k
e2fsprogs-libs x86_64 1.42.9-11.el7 local 166 k
50/78
Verifying : systemd-libs-219-57.el7.x86_64 51/78
Verifying : libselinux-utils-2.2.2-6.el7.x86_64 52/78
68/78
Verifying : glibc-2.17-105.el7.x86_64 69/78
Verifying : xz-libs-5.1.2-12alpha.el7.x86_64 70/78
Verifying : libselinux-2.2.2-6.el7.x86_64 71/78
Verifying : 1:openssl-libs-1.0.1e-42.el7.9.x86_64 72/78
Verifying : libselinux-python-2.2.2-6.el7.x86_64 73/78
Verifying : libgomp-4.8.5-4.el7.x86_64 74/78
Verifying : libgcc-4.8.5-4.el7.x86_64 75/78
Verifying : libcom_err-1.42.9-7.el7.x86_64 76/78
Verifying : e2fsprogs-1.42.9-7.el7.x86_64 77/78
Verifying : 1:openssl-1.0.1e-42.el7.9.x86_64 78/78
Installed:
bzip2-devel.x86_64 0:1.0.6-13.el7 gcc.x86_64 0:4.8.5-28.el7
gcc-c++.x86_64 0:4.8.5-28.el7 libcurl-devel.x86_64 0:7.29.0-46.el7
libxml2-devel.x86_64 0:2.9.1-6.el7_2.3 openssl-devel.x86_64 1:1.0.2k-12.el7
Dependency Installed:
cpp.x8 libselinux-utils.x86_64 0:2.5-12.el7
libsepol.x86_64 0:2.5-8.1.el7 libss.x86_64 0:1.42.9-11.el7
libstdc++.x86_64 0:4.8.5-28.el7 libxml2.x86_64 0:2.9.1-6.el7_2.3
openssl.x86_64 1:1.0.2k-12.el7 openssl-libs.x86_64 1:1.0.2k-12.el7
pcre.x86_64 0:8.32-17.el7 systemd-libs.x86_64 0:219-57.el7
systemd-sysv.x86_64 0:219-57.el7 xz.x86_64 0:5.2.2-1.el7
xz-libs.x86_64 0:5.2.2-1.el7 zlib.x86_64 0:1.2.7-17.el7
Complete!
[root@php ~]# yum install wget -y
Installing : wget-1.14-15.el7_4.1.x86_64 1/1
Verifying : wget-1.14-15.el7_4.1.x86_64 1/1
Installed:
wget.x86_64 0:1.14-15.el7_4.1
Complete!
下载libmerypt包 ,上传到机器环境里
[root@php ~]# ls
anaconda-ks.cfg libmcrypt-2.5.8.tar.gz
[root@php ~]# tar xzvf libmcrypt-2.5.8.tar.gz
[root@php ~]# cd libmcrypt-2.5.8
[root@php libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt && make && make install
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/libmcrypt/share/aclocal" || mkdir -p -- "/usr/local/libmcrypt/share/aclocal"
/usr/bin/install -c -m 644 'libmcrypt.m4' '/usr/local/libmcrypt/share/aclocal/libmcrypt.m4'
make[2]: Leaving directory `/root/libmcrypt-2.5.8/lib'
make[1]: Leaving directory `/root/libmcrypt-2.5.8/lib'
Making install in src
make[1]: Entering directory `/root/libmcrypt-2.5.8/src'
make[2]: Entering directory `/root/libmcrypt-2.5.8/src'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/root/libmcrypt-2.5.8/src'
make[1]: Leaving directory `/root/libmcrypt-2.5.8/src'
Making install in doc
make[1]: Entering directory `/root/libmcrypt-2.5.8/doc'
make[2]: Entering directory `/root/libmcrypt-2.5.8/doc'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/libmcrypt/man/man3" || mkdir -p -- "/usr/local/libmcrypt/man/man3"
/usr/bin/install -c -m 644 './mcrypt.3' '/usr/local/libmcrypt/man/man3/mcrypt.3'
make[2]: Leaving directory `/root/libmcrypt-2.5.8/doc'
make[1]: Leaving directory `/root/libmcrypt-2.5.8/doc'
make[1]: Entering directory `/root/libmcrypt-2.5.8'
make[2]: Entering directory `/root/libmcrypt-2.5.8'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/root/libmcrypt-2.5.8'
make[1]: Leaving directory `/root/libmcrypt-2.5.8'
下载PHP5.6.27包,上传到虚拟机
[root@php ~]# ls
anaconda-ks.cfg libmcrypt-2.5.8 libmcrypt-2.5.8.tar.gz php-5.6.27 php-5.6.27.tar.gz
[root@php ~]# tar zxvf php-5.6.27.tar.gz
[root@php php-5.6.27]# cd php-5.6.27
[root@php php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
[root@php php-5.6.27]# make && make install
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/
Installing PHP CLI binary: /usr/local/php5.6/bin/
Installing PHP CLI man page: /usr/local/php5.6/php/man/man1/
Installing PHP FPM binary: /usr/local/php5.6/sbin/
Installing PHP FPM config: /usr/local/php5.6/etc/
Installing PHP FPM man page: /usr/local/php5.6/php/man/man8/
Installing PHP FPM status page: /usr/local/php5.6/php/php/fpm/
Installing PHP CGI binary: /usr/local/php5.6/bin/
Installing PHP CGI man page: /usr/local/php5.6/php/man/man1/
Installing build environment: /usr/local/php5.6/lib/php/build/
Installing header files: /usr/local/php5.6/include/php/
Installing helper programs: /usr/local/php5.6/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php5.6/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php5.6/lib/php/
[PEAR] Archive_Tar - installed: 1.4.0
[PEAR] Console_Getopt - installed: 1.4.1
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util - installed: 1.3.0
[PEAR] PEAR - installed: 1.10.1
Wrote PEAR system config file at: /usr/local/php5.6/etc/pear.conf
You may want to add: /usr/local/php5.6/lib/php to your php.ini include_path
/root/php-5.6.27/build/shtool install -c ext/phar/phar.phar /usr/local/php5.6/bin
ln -s -f phar.phar /usr/local/php5.6/bin/phar
Installing PDO headers: /usr/local/php5.6/include/php/ext/pdo/
[root@php php-5.6.27]# groupadd -g 1001 nginx
[root@php php-5.6.27]# useradd -u 900 -g nginx -s /sbin/nologin nginx
[root@php php-5.6.27]# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
[root@php php-5.6.27]# cp php.ini-production /etc/php.ini
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm
添加PHP服务到启动列表,并设置开机启动
[root@php php-5.6.27]# chkconfig --add php-fpm
[root@php php-5.6.27]# chkconfig php-fpm on
配置PHP环境
[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php php-5.6.27]# vim /usr/local/php5.6/etc/php-fpm.conf
pid = run/php-fpm.pid
149 user = nginx
150 group = nginx
164 listen = 172.16.0.12:9000
235 pm.max_children = 50
240 pm.start_servers = 5
245 pm.min_spare_servers = 5
250 pm.max_spare_servers = 35
[root@php php-5.6.27]# systemctl start php-fpm
9000端口已经启动,说明php环境安装完成
[root@php php-5.6.27]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 31230/php-fpm: mast
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1382/sshd