|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。教程 装置PHP
本章将按以下步调编译装置以下软件:
* Apache v.1.3.4 -- 世界上最盛行的Web办事器。
* gcc v.2.8.1 -- 来历于GNU的C和C++编译器。
* MySQL v.3.22.16b-gamma -- 世界局限内很多人利用的数据库。
* PHP v.3.0.11 -- 本书所次要引见的软件。从http://www.php.net(或此站点的镜象站点)直接下载可以失掉较新的版本。本章的其它步调依然合用。
* expact -- 用于读取和处置XML文档的函数库。
* phplib -- 用于停止会话办理的PHP函数库。
* libiodbc -- 次要用于存取在非UNIX盘算机中数据库的ODBC函数库。
* MyODBC -- PHP、iODBC和MySQL之间的函数库。
即使如斯,本章也并非引见编译使用法式所需求的那些指令,而只是复杂的停止描写。总之,本书的重点是引见PHP言语,而不是C言语。每个使用法式的编译对我来讲都非常清晰,但愿每一个读者也能没有坚苦的停止编译。假设你的确碰着了一些成绩,可以在某个IRC频道中有礼貌的扣问,或可以测验考试利用旧事组(可以从http://www.dejanews.com会见)失掉匡助来处理成绩。但是,最好的匡助仍是来自http://www.php.net 上的PHP邮件列表。
在入手下手编译进程之前,让咱们先会商一下若何从毛病中恢复。在失掉有关毛病的匡助今后,可以采取以下的号令从头初始化源码目次:
* rm config.cache--几近一切的Linux使用法式都利用configure号令来反省本人的体系,以寻觅有关若何剪裁编译进程的信息。反省的了局将存贮在一个名为config.cache的文件中。假如移走此文件,将迫使设置装备摆设法式从头入手下手从头反省体系。
* make distclean--一切的用C言语编写的Linux使用法式都是用make法式编译的。make法式会寻觅每个源文件,以确认是需求编译仍是已编译过的。make distclean号令可以“重置”一切的源法式,以便能从头编译它们。
* make clean--有的使用法式不撑持make distclean号令,而用make clean号令来取代。make clean号令“重置”一切的源法式,以便能从头编译它们。
即便要装置的一些使用法式不撑持以上的每一个号令,然而试一下这些号令也不会有甚么坏处。
注重:Red Hat v5.2利用glibc库。假如用户从互联网中下载或更新在本章中装置的法式时,必需晓得glibc的信息。利用者可使用rpm -q glibc号令来查出已装置的glibc库的版本号。在作者的体系中,利用rpm -q glibc号令将显示glibc-2.0.7.29。
2.1 根基概念
或许读者之前从没有编译过Linux使用法式,在这里引见一些根基概念,以便在呈现成绩时有能够诊断出成绩地点。
tar
tar,即tape archiver,它可以把几个文件组分解一个文件,并可以选择是不是停止紧缩。这个号令曩昔凡是用来停止备份,以便使数据存储在磁带中。当tar文件被紧缩时,它们有一个.gz的后缀;当tar文件没有紧缩时,它们有一个.tar的后缀。
gcc
gcc 是GNU的C编译器。它的任务是把人可以看懂的源代码文件编译成机械可以读懂的方针文件。C源文件凡是有.c的后缀名,方针文件凡是有.o的后缀名。假如编译任务不克不及正常停止,就是碰着了一个编译期的毛病,或说:语法毛病。在大多半情形下,不完全的编译凡是是编译器找不到一个或几个包括文件而发生的。包括文件都有一个.h的扩大名,凡是用来界说分歧的体系信息,和将多个分歧的.c文件所共有的信息搜集在一同。
make
make是一个经常使用的东西法式,是用来匡助停止编译的。它的任务是用来只编译那些还没有编译过的源文件。编译.c文件将生成一个.o文件,假如.c文件比.o文件更新,也就是说到前次编译之前,源文件被编纂过,那末make将会从头编译.c文件。make指令通常为寻觅一个Makefile文件,在这个文件中包括有一个或多个能履行的方针,例如,make clean会告知make履行排除方针。
ld
ld是GNU的链接法式。它的任务是把一切的方针文件和库链接起来,创立一个单一的可履行文件。侥幸的是,根基上不必手工运转这个法式,由于Makefile将会思索到一切的编译细节。
ldconfig
ldconfig会为在多个库目次(在/etc/ld.so.conf中指定)中寻觅同享库。同享库常被多个的使用法式利用,它们的文件名中的某个中央有.so,例如,libqt.so.1.42是一个同享库。在编译终了以后,有能够需求在/etc/ld.so.conf文件中增添一个目次,而且运转ldconfig -v号令。
./configure
configure将会在盘算机中寻觅一些关头信息,例如,装置的是哪种C编译器,包括文件在哪里等等。然后,configure将会依照所用的盘算机设置装备摆设从头修正Makefile文件。应当利用./configure来在以后目次下运转法式,以免偶尔运转$PATH情况变量中的目次下的其他法式。
符号毗连
符号毗连答应利用者可觉得一个已现有的文件指定另外一个分歧的名字。例如,利用者有能够想把一个名为libqt.so.1.42的文件称为libqt.so.1。符号毗连根基上可使用户把一个文件复制到另外一个分歧的目次上面,但现实上并没有真正复制此文件。第二个文件实例只是复杂地指向第一个文件实例。利用符号毗连最少可以有两点优点,第一点是符号毗连可以节俭硬盘空间,少到只要16字节;第二点有一点奇妙,让咱们先看一下一个名为libqt.so.1且指向libqt.so.1.42的符号毗连。假如需求晋级到libqt.so.1.88,该怎样办呢?用户只需复杂地改动符号毗连,使libqt.so.1指向libqt.so.1.88,而非libqt.so.1.42便可。这意味着触及到libqt.so.1的法式将主动地利用这个库的新版本。依照常规,符号毗连经常使用于完全的宣布版本号。换句话说,libqt.so.1.88和libqt.so.2.32应当有两个分歧的静态毗连(分离为libqt.so.1和libqt.so.2)。
2.2 编译前的筹办任务
以下步调将为体系做好编译前的筹办任务。
1. mkdir /usr/local/src -- 我选用/usr/local树作为所装置使用法式的根目次。其别人能够选用/usr/opt、/opt或/var目次。为了更便利的依照本章中的指令操作,请选用/usr/local目次作为根目次。当编译完成今后,用户可以把这些文件复制到分歧的目次中。
注重:为了能完本钱章中的其它步调,利用者必需具有root权限。
2. cd /usr/local/src--转到源文件目次下。
3. 下载以下文件(可以从http://www.mtolive.com/phpbook站点下载),或从本书随机附带的光盘中,复制这些文件到/usr/local/src目次下:
. apache_1.3.4.tar.gz
. gcc-2.8.1.tar.gz
. mysql-3.22.16b-gamma.tar.gz
. php-3.0.11.tar.gz
. expat.tar.gz
. phplib.tar.gz
. libiodb-2.50.3
. myodbc-2.50.24-src
4. 利用tar号令解紧缩以上文件。tar的x选项为解开选项,v选项将在屏幕上显示文档中解出来的文件名,z选项为解紧缩选项,f选项用于在号令行中指定.tar文件名。
tar xvzf apache_1.3.4.tar.gz
tar xvzf gcc-2.8.1.tar.gz
tar xvzf mysql-3.22.16b-gamma.tar.gz
tar xvzf php-3.0.11.tar.gz
tar xvzf expat.tar.gz
tar xvzf phplib.tar.gz
5. gcc -v
肯定体系中现有gcc的版本。假如你的体系不是v2.7.2.3,鄙人面的操作步调中采取你的gcc版本号交换v.2.7.2.3。
6. cp `which gcc` /usr/bin/gcc-2.7.2.3
假如需求,把现有的gcc备份,以便今后利用。Linux的另外一个长处是可以很轻易在目次下存储一个法式的多个版本。
7. httpd -v
肯定体系中的Apache的版本号。假如你的体系中的Apache不是v1.3.4,鄙人面的操作步调中利用你的版本号交换v1.3.4。
8. mv `which httpd` /usr/sbin/httpd-1.3.4
假如需求,把现有的Apache备份,以便今后利用。
2.3 编译C编译器gcc
利用者应当装置、编译法式的第一个法式就是C编译器。随Red Hat v5.2附带的C编译器是gcc v2.7.2.3,因为它的版本对照低,以致于不克不及准确的编译PHP。但是gcc v.2.7.3可以用来编译版本较高的gcc v2.8.1。
编译新版本的gcc需求履行:
1. cd /usr/local/src/gcc-2.8.1
转到gcc的顶级目次下。
2. ./configure -prefix=/usr/local/gcc
运转设置装备摆设法式,强迫装置法式在前面的装置过程当中利用/usr/local/gcc作为gcc的装置目次。
3. make bootstrap LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
编译新的C和C++编译器。
4. make install LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
装置新的C和C++编译器。
5. mv /usr/local/gcc/bin/gcc /usr/local/gcc/bin/gcc-2.8.1
把新的gcc编译重视新定名,使它的名字中含有版本号。
6. ln -s \
/usr/local/gcc/bin/gcc-2.8.1 \
/usr/bin/gcc-
给新编译过的gcc可履行文件创立一个符号毗连/usr/bin/gcc。
7. gcc -v
显示gcc的版本号。假如编译和装置都正常的话,将显示v.2.8.1。
2.3 编译MySQL
如今来编译MySQL。在编译任务完成以后,就能够利用MySQL的使用法式来测试装置。
1. cd /usr/src/mysql-3.22.16a-gamma
转到MySQL的顶级目次下。
2. ./configure --prefix=/usr/local/mysql
运转设置装备摆设法式,强迫装置法式在前面的装置过程当中利用/usr/local/mysql作为MySQL的装置目次。
3. make
编译MySQL。
4. make install
装置MySQL。
5. echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
将MySQL库地点的目次添加进设置装备摆设文件中。如许,当Linux启动或履行ldconfig号令时,将会在该设置装备摆设文件中的目次里搜刮库文件。
6. ldconfig -v | grep libmysqlclient
ldconfig号令能读取/etc/ld.so.conf文件中列出的目次,并对在那些目次里找到的库文件停止缓冲。grep号令在ldconfig号令的大批输入了局中查找MySQL库文件,并限制文本以相似上面体例停止显示:
libmysqlclient.so.6 => libmysqlclient.so.6.0.0.
7. echo "/usr/local/mysql/bin/safe_mysqld > /dev/null &" >> /etc/rc.d/rc.local
将MySQL启动指令添加到/etc/rc.d/rc.local文件中,如许每次启动Linux后就会主动运转MySQL。
8. ./scripts/mysql_install_db
初始化数据库。
9. /usr/local/mysql/bin/safe_mysqld > /dev/null &
启动MySQL办事器作为后台法式,为了测试装置,MySQL办事器必需启动。
10. ln -s \
/usr/local/mysql/bin/mysql \
/usr/bin/mysql
我对照喜好在/usr/bin目次下为装置目次创立符号链接。这一办法削减了PATH情况变量中的目次数目,还可以将不但愿其别人运转的MySQL东西法式埋没起来,(例如,mysqladmin号令)。另外一办法是将号令PATH="$PATH:/usr/local/mysql/bin"放在/etc/profile文件中。以上两种办法都很可以采取。
11. ln -s\
/usr/local/mysql/bin/mysqlshow \
/usr/bin/mysqlshow
该指令是让普通用户都可以运转mysqlshow号令。
2.4 测试MySQL
在持续Apache和PHP编译之前,起首来测试MySQL的装置是不是胜利。正式宣布的MySQL带有很多有效的东西,这里咱们只利用mysql和mysqlshow号令来停止测试。(假如对数据库不熟习,请不必忧虑,诸如用户、表、纪录等数据库的概念将在第六章“数据库和SQL”中加以引见。)
mysqladmin的感化是创立和删除数据库、反省SQL的形态,和其他一些用处。起首,经由过程反省版本号以确认是不是已准确装置了MySQL:
>PATH="usr/local/mysql/bin:$PATH"
>mysqladmin version
Ver 7.8 Distrib 3.22.16a-gamma, for pc-linux-gun on i686 TCX Datakonsult AB, by Monty
Server version 3.22.16a-gamma
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 2 hours 30 min 39 sec
Threads: 1 Questions: 7 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2
可以用以下号令旁观mysqladmin的一切功效.
mysqladmin --help | less
或许mysqlshow是更让人冲动的东西,它可以列出数据库、表和字段名,以下所示:
清单2.1 mysqlshow--显示数据库,表和字段名清单
Page 18(第13行)-19(倒数第10行) , 清单 2.1
最初要引见的MySQL东西是mysql,这个法式将深切到MySQL的中间,而且可使你可以立即在Linux号令行提醒下履行SQL语句。在shell形式下运转mysql。
Page 19(倒数第5行)-20(倒数第5行)
当心:设置暗码要利用password()函数。假如需求进一步懂得,请查阅MySQL文档。
当心:在体系进入正常任务形式的时分,请选用一个比“password”更好的root暗码。
2.5 编译iODBC和MyODBC
iODBC是一个完成开放性数据库互连(Open Database connectivity)协定的函数库。它次要用于毗连运转于Microsoft Windows的数据库引擎。
1. cd /usr/local/src/libiodbc-2.50.3
转到iODBC目次。
2. ./configure \
--prefix=/usr/local/iodbc \
--with-iodbc-inidir=/usr/local/etc
运转设置装备摆设法式,并强迫设置iODBC为装置到目次/usr/local/iodbc下。另外,应确认odbc的初始化文件为/etc/odbc.ini。
3. make
4. make install
把库文件复制到目次/usr/local/iodbc/lib下,而且把包括文件复制到目次/usr/local/iodbc/include下。
5. cd /usr/local/src/myodbc-2.50.24
转到MyODBC目次下。
6. ./configure \
--prefix=/usr/local/myodbc \
--with-mysql-sources=/usr/local/mysql-3.22.16a-gamma \
--with-odbc-ini=/etc/odbc.ini \
--with-iodbc=/usr/local/iodbc
运转MyODBC设置装备摆设法式。
7. make
8. make install
把库复制到目次/usr/local/myodbc/lib下。
2.6 编译PHP
编译PHP比编译之前的使用法式更庞杂,这是由于编译PHP现实上是expat、Apache和PHP的组合。编译的了局将生成一个带有PHP的Apache版本。为了要编译PHP,可以采取以下步调:
1. cd /usr/local/src/expat
转到expat目次。
2. make
编译expat源文件。
3. 把以下号令加到Makefile文件中,必需包管在输出ar和ralib之前利用的是Tab键。
libexpat.a: $(OBJS)
ar -rc $@ $(OBJS)
ranlib $@
4. make libexpat.a
把expat方针文件组分解库文件。
5. mv libexpat.a /usr/local/lib
PHP设置装备摆设文件在/usr/local/lib目次下寻觅libexpat.a文件。把libexpat.a文件移到PHP设置装备摆设文件已知的目次下,可觉得今后的操作削减费事。
6. cd /usr/local/src/php-3.0.11
转到PHP的顶级目次下。
7. mkdir /usr/local/include/xml
确认/usr/local/include/xml目次是存在的。
8. ln -s \
/usr/local/src/expat/xmltok/xmltok.h \
/usr/local/include/xml/xmltok.h
当能创立符号毗连时,为何还要复制呢?
9. ln -s \
/usr/local/src/expat/xmlparse.h \
/usr/local/include/xml/xmlparse.h
这是PHP为了可以准确地被编译所需求的另外一个包括文件。
10. cd /usr/local/src/apache_1.3.4
转到Apache的顶级目次下。
11. ./configure -prefix=/usr/local/apache
运转设置装备摆设法式,强迫设置Apache装置目次为/usr/local/apache。
12. cd /usr/local/src/php-3.0.11
转到PHP的顶级目次下。
13. ./configure \
--with-apache=../apache_1.3.4 \
--with-iodbc=/usr/local/iodbc \
--with-mysql=/usr/local/mysql \
--with-xml
运转设置装备摆设法式,而且告知设置装备摆设法式撑持Apache、MySQL和XML。
14. make
编译PHP源文件。
15. make install
装置已编译的文件。PHP库文件会被放在Apache的模块目次下,如许可以在编译Apache时能找到它们。
16. cd /usr/local/src/apache_1.3.4
转到Apache的顶级目次下。
17. ./configure \
--prefix=/usr/local/apache \
--active-module=src/modules/php3/libphp3.a
再一次设置装备摆设Apache,此次告知Apache要加载PHP模块。
18. make
编译Apache源文件。
19. make install
装置已编译的文件。
20. mv \
/usr/local/apache/bin/httpd \
/usr/local/apache/bin/httpd-1.3.4
从头定名新创立的httpd可履行文件,如许就可以够装置多种版本。
21. ln -s \
/usr/local/apache/bin/httpd-1.3.4 \
/usr/sbin/httpd
创立一个指向新的可履行文件的符号链接。
22. httpd -v
证明可以会见新的可履行文件。该号令的履行了局将显示版本1.3.4,并且创立日期也应当准确无误。
23. 编纂/usr/local/apache/conf/http.conf文件,搜刮AddType并确认以下行未加正文。
AddType application/x-httpd-php3 .phtml
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
24. 接着编纂/usr/local/apache/conf/http.conf文件,搜刮DirectoryIndex并将index.php3放外行尾。
25. 创立一个名为/usr/local/local/php3.ini的文件,该文件应包括以下的号令行:
include_path=.:/usr/local/apache/php/
auto_prepend_file=/usr/local/apache/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
26. ln -s \
/usr/local/src/php-3.0.11/doc/manual.html \
/usr/local/src/php-3.0.11/doc/index.html
创立一个符号链接,如许绝大多半Web阅读器就会准确地主动显示PHP文件肇端页。
27. ln -s \
/usr/local/src/php-3.0.11/doc \
/usr/local/apache/htdocs/phpdocs
创立一个符号链接,如许就能够经由过程http://localhost/phpdocs/, 来会见PHP文档。
28. 创立一个叫做/usr/local/apache/htdocs/robots.txt的文件,如许便可防止搜刮引擎为PHPLIB,phpMyAdmin和PHP文件创立索引,新创立的文件应包含以下设置行:
#robots.txt for (hostname)
User-agent *
Disallow: /phpdocs/
Disallow: /php/
Disallow:/phpMyAdmin/
2.7 装置PHPLIB
在浏览第15章“处置并发的会见”之前,应先装置PHPLIB,可以依照以下步调停止装置:
1. 以root用户或其他任何可以在/usr/local/apache目次下写文件的用户注册。
2. cd /usr/local/apache/
在入手下手下载文件之前,进入到Web办事器的顶级目次下。
3. 从以下Web网址下载最新版本的文件,注重gz后缀的文件名,以避免它的文件名phplib.tar.gz被修改。
http://phplib.shonline.de/
4. tar xv2f phplib.tar.gz
解紧缩PHPLIB模块。
5. 编纂/usr/local/lib/php3.ini文件,应包含以下设置内容:
include_path=.:/usr/local/apache/phplib-6.1/php
auto_prepend_file = /usr/local/apache/phplib-
6.1/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
6. 创立一个名为poe_sessions的mysql数据库。我普通利用phpMyAdmin,假如情愿,也能够利用SQL号令创立数据库。
7. cd /usr/local/apache/phplib-6.1/stuff
进入建表目次下。
8. mysql php_book --user=root --password <
create_database.mysql
创立PHPLIB所需求的数据库表。
9. 利用以下值在mysql数据库表中增添一条新纪录:
host: %
password: <-- no password.
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user02".
注重:也能够利用以下SQL语句:
INSERT INTO
user
(
Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'kris'
, ''
, 'Y', 'Y', 'Y', 'Y'
)
10. 利用以下值在mysql数据库的db表中增添一条新纪录:
host: %
db: poe_sessions
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user03".
注重:也能够利用以下SQL法式。
INSERT INTO
db
(
Host
,Db
,User
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'poe_sessions '
, 'kris'
, 'Y', 'Y', 'Y', 'Y'
)
11. /usr/local/mysql/bin/mysqladmin -u root -p reload
从头装载MySQL权限表。
12. 在php_book数据库中创立两个PHPLIB已认证的用户(user01和user02),可使用以下SQL语句:
INSERT INTO
auto_user
(
uid
,username
,password
,perms
) VALUES (
'c14cbf141ab1b7cd009356f555b1234'
,'user01'
,'test'
,'admin'
)
INSERT INTO
auth_user
(
uid
,username
,password
,perms
) VALUES (
'c14cbf141ab1b7cd009356f555b3241'
,'user02'
,'test'
,'admin'
)
13. mv\ /use/local/apache/phplib-6.1/pages \
/use/local/apach/htdocs
将演示子目次置于Web办事器的根目次下,如许就能够用阅读器会见它。
14. 编纂文本文件/usr/local/apache/htdocs/robots.txt,使它包含以下内容:
Disallow: /phplib/
15. 利用Web阅读器会见http://localhost/phplib/。将会看到如图2.1所示页面。
Page 29 图2.1
图2.1 从头装载两次今后呈现的PHPLIB演示页面
2.8 测试Linux情况下的ODBC
对所装软件停止根基测试是很主要的,出格是需求手工编纂设置装备摆设文件时。以下的测试可确保你的MySQL驱动法式运转正常,而且编译的iODBC库文件也是准确无误的。
1. 利用清单2.1所列的内容,创立一个名为/usr/local/etc/odbc.ini的文件。
清单 2.2 /usr/local/etc/odbc.ini- 体系ODBC 设置装备摆设文件
;
;odbc.ini
;
[ODBC Data Sources]
mysql = mysql
[php_book]
driver = /usr/local/myodbc/lib/libmyodbc.so
host = localhost
database = mysql
user = root
2. cd /usr/local/src/libiodbc-2.50.3/samples
3. ./odbctest
运转ODBC测试法式。
4. DSN=mysql;PWD=password
告知测试法式要会见的数据源。
5. select host,user from user
在提醒符下履行一个SQL语句,假如有回应,申明iODBC和MySQL已可使用了。
如今,在盘算机中已装置好了ODBC,因为它的装置步调不太明晰并且文档又很少,所以本章中讲述了其装置和测试指令,但是鉴于ODBC次要是一项Microsoft手艺,且很少在Linux顶用到,所以这里是本书中最初一次有关引见。
2.9 总结:
本章讲述了若何获得PHP,及在盘算机中停止装置所需求的步调,编译了内建PHP的特定版本Apache 办事器。同时,还装置了将在第15章“中场四:处置并发会见”顶用所到的PHPLIB。
在相册系统的开发上,因为采用的是团队分工合作方式,更让我明白了在一个团队之中,团队成员之间的交流沟通的重要性,如果没有很好的沟通交流,成员之间的任务没有分配好。 |
|