十周第一次课

11.10/11.11/11.12 安装PHP5

PHP官网www.php.net
当前主流版本为5.6/7.1

PHP安装最后的原因,就是因为PHP需要一个Apache的依赖包 apxs2
下载PHP 5.6

cd /usr/local/src
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

解压缩

tar zxvf php-5.6.30.tar.gz

进入PHP目录,开始初始化

cd php-5.6.30
 ./configure --prefix=/usr/local/php \                    //安装目录
--with-apxs2=/usr/local/apache2.4/bin/apxs \              //依赖Apache的一个工具,apxs2,不用手动的干涉,自动的把拓展模块放到目录下
--with-config-file-path=/usr/local/php/etc  \             //指定配置文件所在路径   (1)
--with-mysql=/usr/local/mysql \                           //指定MySQL的路径     (2)在centos 7 直接不再使用这个配置
--with-pdo-mysql=/usr/local/mysql \                       //指定MySQL的库的路径 (2)
--with-mysqli=/usr/local/mysql/bin/mysql_config \         //指定MySQL的路径 (2)
--with-libxml-dir \                                       //指定PHP需要的模块
--with-gd \                                               //指定PHP需要的模块
--with-jpeg-dir \                                         //指定PHP需要的模块
--with-png-dir \                                          //指定PHP需要的模块
--with-freetype-dir \                                     //指定PHP需要的模块
--with-iconv-dir \                                        //指定PHP需要的模块
--with-zlib-dir \                                         //指定PHP需要的模块
--with-bz2 \                                              //指定PHP需要的模块
--with-openssl \                                          //指定PHP需要的模块
--with-mcrypt \                                           //指定PHP需要的模块
--enable-soap \                                           //指定PHP需要的模块
--enable-gd-native-ttf \                                  //指定PHP需要的模块
--enable-mbstring \                                       //指定PHP需要的模块
--enable-sockets \                                        //指定PHP需要的模块
--enable-exif                                            //指定PHP需要的模块
--with-config-file-path=/usr/local/php/etc  \             //指定配置文件所在路径   (1)
PHP的配置文件php.ini
-with-mysql=/usr/local/mysql \                           //指定MySQL的路径     (2)在centos 7 直接不再使用这个配置
--with-pdo-mysql=/usr/local/mysql \                       //指定MySQL的库的路径 (2)
--with-mysqli=/usr/local/mysql/bin/mysql_config \         //指定MySQL的路径 (2)
让MySQL和PHP通信,需要编译支持的模块

执行命令后提示

configure: error: xml2-config not found. Please check your libxml2 installation.

说明缺少 xml2 的库 库文件一般都是devel 为名字结尾的
搜索安装包看看

yum list |grep xml2
[[email protected] php-5.6.30]# yum list |grep xml2
libxml2.x86_64                          2.9.1-6.el7_2.3                @anaconda
libxml2.i686                            2.9.1-6.el7_2.3                base
libxml2-devel.i686                      2.9.1-6.el7_2.3                base
libxml2-devel.x86_64                    2.9.1-6.el7_2.3                base
libxml2-python.x86_64                   2.9.1-6.el7_2.3                base
libxml2-static.i686                     2.9.1-6.el7_2.3                base
libxml2-static.x86_64                   2.9.1-6.el7_2.3                base
mingw32-libxml2.noarch                  2.9.3-1.el7                    epel
mingw32-libxml2-static.noarch           2.9.3-1.el7                    epel
mingw64-libxml2.noarch                  2.9.3-1.el7                    epel
mingw64-libxml2-static.noarch           2.9.3-1.el7                    epel
python-xml2rfc.noarch                   2.5.2-2.el7                    epel
tinyxml2.x86_64                         2.1.0-2.20140406git6ee53e7.el7 epel
tinyxml2-devel.x86_64                   2.1.0-2.20140406git6ee53e7.el7 epel
xml2.x86_64                             0.5-7.el7                      epel

是这个包,安装一下

yum install -y libxml2-devel.x86_64

重新初始化一下看看,结果发现

configure: error: Cannot find OpenSSL‘s <evp.h>

继续查找缺少的库文件

[[email protected] php-5.6.30]# yum list |grep openssl-devel
openssl-devel.i686                      1:1.0.1e-60.el7_3.1            updates
openssl-devel.x86_64                    1:1.0.1e-60.el7_3.1            updates
xmlsec1-openssl-devel.i686              1.2.20-5.el7                   base
xmlsec1-openssl-devel.x86_64            1.2.20-5.el7                   base

继续安装库文件

yum install -y openssl-devel.x86_64
安装库文件后,重新初始化

重新初始化一下看看,结果发现

configure: error: Please reinstall the BZip2 distribution

继续查找库

[[email protected] php-5.6.30]# yum list |grep bzip2-devel
bzip2-devel.i686                        1.0.6-13.el7                   base
bzip2-devel.x86_64                      1.0.6-13.el7                   base

继续安装库文件

yum install -y bzip2-devel.x86_64

安装库文件后,重新初始化 继续重复之前的操作

configure: error: jpeglib.h not found.
[[email protected] php-5.6.30]# yum install -y libjpeg-devel

继续重复之前的操作

configure: error: png.h not found.
[[email protected] php-5.6.30]# yum install -y libpng-devel

继续重复之前的操作

configure: error: freetype-config not found.
yum install -y freetype-devel

继续重复之前的操作

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

这个包属于扩展源里面的,需要先安装一个扩展源,前提你之前没有安装过

yum install -y epel-release

安装好拓展源以后,安装对应缺少的库

yum install -y libmcrypt-devel

最后一次 初始化,终于成功
进行make
结束后,使用echo $? 查看 并没有问题
进行make install
结束后,使用echo $? 查看也没有问题

查看 PHP 的服务

ls /usr/local/php/

核心二进制文件在 /usr/local/php/bin

[[email protected] php-5.6.30]# ls /usr/local/php/bin/
pear  peardev  pecl  phar  phar.phar  php  php-cgi  php-config  phpize

PHP和Apache 结合在一起靠的就是 libphp5.so 的文件

[[email protected]st php-5.6.30]# ls /usr/local/apache2.4//modules/libphp5.so
/usr/local/apache2.4//modules/libphp5.so

查看PHP加载的模块

/usr/local/php/bin/php -m

只能查看到静态的模块

根据

[[email protected] php-5.6.30]# /usr/local/apache2.4/bin/httpd -M
AH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName‘ directive globally to suppress this message
 dir_module (shared)
 alias_module (shared)
 php5_module (shared)
 ...

PHP是做为一个扩展模块加载到 Apache 里面,所有Apache想要去执行、调用PHP的脚本,需要通过PHP Module 去进行调用
PHP的模块文件路径为

/usr/local/apache2.4/modules/libphp5.so
[[email protected] php-5.6.30]# ls -l /usr/local/apache2.4/modules/libphp5.so
-rwxr-xr-x. 1 root root 37752152 7月  27 22:04 /usr/local/apache2.4/modules/libphp5.so

启动配置文件

vim /usr/local/apache2.4/conf/httpd.conf

在httpd 的配置文件里面新增了一行,指定了php5_module 的路径为 modules/libphp5.so
这些内容里面的都是一些不显示不调用的模块,如果有需要,只需要把 # 注释删除掉就可以进行调用


LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule cgid_module modules/mod_cgid.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so

安装完成PHP以后,需要把配置文件拷贝到指定路径下

cp php.ini-production  /usr/local/php/etc/php.ini

两个配置文件
php.ini-development 这个是测试环境用的
php.ini-production 这个是线上生产环境用的
拷贝好配置文件,在重新使用

usr/local/php/bin/php -i |less

就会发现 Loaded Configuration File => (none) 这一项有了配置文件路径 /usr/local/php/etc/php.ini

使用

/usr/local/php/bin/php -i |less

可以查看到PHP 的一些信息,包括编译参数

phpinfo()
PHP Version => 5.6.30

System => Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64
Build Date => Jul 27 2017 22:01:59
Configure Command =>  ‘./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‘
Server API => Command Line Interface
Virtual Directory Support => enabled
Configuration File (php.ini) Path => /usr/local/php/etc            //configurtion 的配置路劲
Loaded Configuration File => (none)                                 /这些都没有加载任何东西,因为   /usr/local/php/etc 目录想天是空的,没有加载任何配置文件
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API => 20131106
PHP Extension => 20131226
Zend Extension => 220131226
Zend Extension Build => API220131226,TS
PHP Extension Build => API20131226,TS
Debug Build => no
Thread Safety => enabled
Zend Signal Handling => disabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring

11.13 安装PHP7

安装 PHP 7

安装编译时需要的模块

yum -y install libxml2
yum -y install libxml2-devel

yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel

进入目录,下载文件

cd /usr/local/src/
axel http://mirrors.sohu.com/php/php-7.2.1.tar.xz

因为是bz2的包,需要用jxvf 来解压

tar xf php-7.2.1.tar.xz

进入php目录

cd php-7.1.6

初始化配置

./configure --prefix=/usr/local/php7 --exec-prefix=/usr/local/php7 --bindir=/usr/local/php7/bin --sbindir=/usr/local/php7/sbin --includedir=/usr/local/php7/include --libdir=/usr/local/php7/lib/php --mandir=/usr/local/php7/php/man --with-config-file-path=/usr/local/php7/etc --with-mysql-sock=/tmp/mysql.sock --with-apxs2=/usr/local/apache2.4/bin/apxs --with-pdo-mysql --with-mysqli --with-zlib-dir --with-mhash --with-openssl --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --disable-fileinfo
make && make install

一台机器上可以安装两个PHP 不过需要指定调用

cp php.ini-* /usr/local/php7/etc/
cp php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

#php-fpm
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
vim /usr/local/php7/etc/php.ini //编辑配置文件
mysqli.default_socket = /usr/local/mysql/mysql.sock //将php与mysql关联
date.timezone = Asia/Shanghai //时区设置

搜索php 把其中一个模块注释掉就可以了
路径有区别

ls /usr/local/apache2.4/modules/libphp7.so
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

php中mysql,mysqli,mysqlnd,pdo到底是什么

名词解释:
最开始的初学者,往往搞不清mysqli,mysqlnd,pdo到底是什么,下面先直接贴出最直观的名字吧。

MYSQL:This extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0.
MYSQLI: MySQL Improved Extension
MySQLND: MySQL Native Drive
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。
以上摘自 PHP官方手册: http://php.net/manual/en/book.mysqli.php
用中文说:
MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并别从PHP7开始已经被移除。
MYSQLI 叫做 “MySQL增强扩展”。
MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”
PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。

针对本篇文章
再补充几个名词解释:
1 什么是API?
一个应用程序接口(Application Programming Interface的缩写),定义了类,方法,函数,变量等等一切 你的应用程序中为了完成特定任务而需要调用的内容。在PHP应用程序需要和数据库进行交互的时候所需要的API 通常是通过PHP扩展暴露出来(给终端PHP程序员调用)。
上文所说的MYSQL 和MYSQLI扩展就提供了这样的API。
2什么是驱动?
驱动是一段设计用来于一种特定类型的数据库服务器进行交互的软件代码。驱动可能会调用一些库,比如MySQL客户端库或者MySQL Native驱动库。 这些库实现了用于和MySQL数据库服务器进行交互的底层协议。
在PHP拓展的角度上看,MYSQL和MYSQLi还是比较上层的拓展,依赖更底层的库去连接和访问数据库。
上文所说的MYSQLND 就是所说的底层的数据库驱动。当然,还有一个驱动叫做libmysqlclient。至于如何选择使用这两种驱动的哪一种,请看这里选择哪一种底层数据库驱动。
总的来说:
从应用的层面上看,我们通过PHP 的MYSQL或者MYSQLi扩展提供的API去操作数据库。
从底层来看,MYSQLND提供了底层和数据库交互的支持(可以简单理解为和MySQL server进行网络协议交互)。
而PDO,则提供了一个统一的API接口,使得你的PHP应用不去关心具体要连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器。比如MYSQL,SQLITE任何数据库都行。
即从大部分功能上看,PDO提供的API接口和MYSQLI提供的接口对于普通的增删改查效果是一致的。
最后贴下代码:
MYSQL连接:

<?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库连接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names ‘utf8‘");
echo "数据库连接成功";
?>
MYSQLI连接:
<?php
$conn = mysqli_connect(‘localhost‘, ‘root‘, ‘‘, ‘bbs‘);
if(!$conn){
die("数据库连接错误" . mysqli_connect_error());
}else{
echo"数据库连接成功";
}
?>
PDO连接:
<?php
try{
$pdo=new pdo("mysql:host=localhost;dbname=bbs","root","");
}catch(PDDException $e){
echo"数据库连接错误";
}
echo"数据库连接成功";
?>
想更多去了解他们的区别和联系,可以手动去编译一下PHP的源代码。注意参数
--enable-pdo
--with-pdo-mysql
--enable-mysqlnd
--with-mysqli
--with-mysql//php7的已经不再支持,此参数configure 的时候会报ERROR

http://blog.csdn.net/u013785951/article/details/60876816

查看编译参数

Linux下查看Nginx、Napache、MySQL、PHP的编译参数的命令如下:

1、nginx编译参数:

#/usr/local/nginx/sbin/nginx -V

2、apache编译参数:

# cat /usr/local/apache/build/config.nice

3、php编译参数:

# /usr/local/php/bin/php -i |grep configure

4、mysql编译参数:

# cat /usr/local/mysql/bin/mysqlbug|grep configure

http://ask.apelearn.com/question/1295

原文地址:http://blog.51cto.com/235571/2117223

时间: 2024-10-20 20:05:32

十周第一次课的相关文章

十周第一次课(2月28日)

十周第一次课(2月28日)11.10/11.11/11.12 安装PHP5 cd /usr/local/src wget http://cn2.php.net/distributions/php-5.6.30.tar.gz tar zxvf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file

二周第一次课(12月18日)

二周第一次课(12月18日)2.6 相对和绝对路径2.7 cd命令2.8 创建和删除目录mkdir/rmdir2.9 rm命令 相对和绝对路径: (根./)下的文件目录是绝对路径:[[email protected] ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33/etc/sysconfig/network-scripts/ifcfg-ens33 (当前目录下的文件目录)是相对路径:[[email protected] ~]# pwd/root

六周第一次课(1月15日) 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

六周第一次课(1月15日)9.1 正则介绍_grep上9.2 grep中9.3 grep下 在计算机科学中,对"正则表达式" 的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其他工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,还是查询某个日志文件并分析其容,都会用到正则表达式.其实正则表达式只是一种思

六周第一次课(1月15日)

六周第一次课(1月15日)9.1 正则介绍_grep上 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 2.格式grep [options] 3.主要参数[options]主要参数:-c:只输出匹配行的计数.-I:不区分大 小写(只适用于单字符).-h:查询多文件时不显示文件名.-l:查询多文件时只输出包

一周第一次课笔记(1月22日)

一周第一次课(1月22日) 1.1学习之初 1.2约定 1.3认识Linux 1.4安装虚拟机 1.5安装centos7 1.1学习之初 学习之前合理定位自己 给自己设定1个合理目标 计划好学习的期限.跳槽时间.首份工作的月薪.两年内达到的月薪. 课程,大概3~4个月学完,3年内还可以继续学更新的技术.可以进入同学圈子. 1.2约定 下载CentOS 7.4(版本以最新版本为准).虚拟软件VMware workstation 10.终端puTTY+Xshell. 下载一个在线笔记,记笔记,申请博

三周第一次课(2月5日)笔记

三周第一次课(2月5日)2.27linux和windows互传文件3.1用户配置文件和密码配置文件3.2用户组管理3.3用户管理 2.27linux和windows互传文件 3.1用户配置文件和密码配置文件用户的配置文件 创建一个用户,会在这个文件增加一行,分成7段. 一个专门存密码的文件.分为9段. 分成个命令写,中间加":" 3.2用户组管理用户组管理文件 组密码配置文件 用户帮我们备份了文件. 自定义 3.3用户管理命令useradd 后面跟用户 增加用户. 原文地址:http:

五周第一次课(3月5日)

五周第一次课(3月5日)7.1 安装软件包的三种方法7.2 rpm包介绍7.3 rpm工具用法7.4 yum工具用法7.5 yum搭建本地仓库(视频中ppt小错误: gpcheck改为gpgcheck,yum cean 改为 yum clean) 扩展 yum保留已经安装过的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml 搭建局域网yum源 http://ask.apelearn.com/question/762

一周第一次课(3月12日)笔记

一周第一次课(3月12日)笔记1.1 学习之初 1.2 约定 1.3 认识Linux 1.4 安装虚拟机 1.5 安装centos71.1 学习之初学习linux的目的:想在杭州找到一份Linux的相关工作(运维.开发),通过课程打下坚实的Linux基础.学习方法:预习和复习的重要性.当日事当日毕.记笔记.利用好资源1.2 约定学习所需环境(本人使用):CentOS 7.4.VMware Workstation Pro 14.puTTY 0.70.Xshell 5学习辅助工具:1.3 认识Lin

一周第一次课(3月19日)笔记

一周第一次课(3月19日)1.1 学习之初 1.2 约定1.3 认识Linux1.4 安装虚拟机1.5 安装centos7 本课程所使用的操作系统:Centos7.3虚拟化软件:VMware Workstation 10远程连接工具:PuTTY(缺点:当打开多个窗口时切换麻烦) +Xshell (free) keepass.info(密码记录工具网址) 有用的网站 1)r.aminglinux.com (各种软件更新)2)centos7.aminglinux.com(课程中所使用的代码和命令)