公元2013年5月17日,星期五。今天是个普通的日子,但对于我而言,这一天似乎充满着劫难。算了,不白话了,直接上苦情剧吧!

今天部署测试服务平台,基于PHP网站的服务器架构。

平台搭建

平台软件:appserv-win32-2.5.9_PConline(朋友给的)

该软件的特点就是安装完成之后,PHP,MySQL,Apache服务就全有了,而且基本不用过多配置,装完之后就可以满足一般的需求。

文件默认路径部署情况

路径

php页面测试结果

php——OK

 

但问题出现了,所有的平台软件都并不是那么的尽善尽美,并不会100%的符合我们的应用需求,总有些地方是需要我们去手动修改的,比如模块之类的。

笔者目前的方向并不是PHP,但目前笔者的很多朋友都在使用PHP,而且大家貌似都比较信任我(或许他们也太不认识其他人了吧(*^__^*) ),所以都向我咨询,而且吧,我的虚荣心又比较强,唉,没办法,每次遇到问题又着实头特,但为了虚荣也只能硬着头皮弄了,实在解决不了,就只能向高手求救!再次特别致谢ISA兄弟(不知道你是男的还是女的,先叫兄弟吧)给了我好多帮助和链接。好了,感恩到此,可以感动的流泪了!T_T

网站部署

感动结束,流泪止泣!继续说问题:

平台装好了,设置一下系统环境变量,然后开始部署网站。

环境变量

网站是基于模版架构形式的,安装过程类似于软件安装一样

第一步,同意协议

第二步,配置参数

第三步,配置数据库

第四部,配置用户

第五步,完成。

 

第一步顺利通过,因为不同意就没有后文了!(T_T这就是现实啊!)

爷们儿卡死在第二步,配置参数

当网站部署进行到第二步的时候,系统提示mcrypt,curl模块未加载

mcrypt_curl模块未加载

此时有点小纠结,不过也有点轻敌,以为加载了就完事儿了。索性使用regsvr32命令,但不幸的弹窗又出现了。(如图)

已加载php_curl.dll,但没有找到DllRegisterServer输入点。

无法注册这个文件。

注册模块

坑爹啊,加载完了,不能注册?(有点哭笑不得!)这下踏实了,确实不知道该咋整了!

唉,上网搜搜再说吧

搜了一堆资料,都说打开php.ini文件

找到
;extension=php_mcrypt.dll
改成
extension=php_mcrypt.dll //去掉前面的;使之生效
然后复制libmcrypt.dll,php_mcrypt.dll到system32目录下。

这是解决mcrypt模块加载的方法,试了试,貌似不管什么用,也怪我懒点,脑子活点,心想“不就是取消注释嘛,那我把注释全都取消,不就得了?”,于是我就这么干了,还别说,真管用,mcrypt终于加载了!

但悲剧又来了,mcrypt是加载了,但点击下一步,系统提示curl还没加载呢,苍天,这可肿么办?

curl模块加载 

于是又到网上搜资料,把php_curl.dll放到了system32,果断通过!(话说,我系统变量都设置好了,为啥就没起效果呢?)

看看系统页面,都有了!

 mysql

curl

信心满满的进入第三步,果断再次受伤!

数据库提示“必须加载pdo_mysql”

PHP Extensions "pdo_mysql" must be loaded.

sql

唉,部署个网站容易嘛~~

继续搜索,网上说的跟之前的内容一样,需要取消注释,并且把php_mysql.dll,php_pdo_mysql.dll,php_pdo.dll复制到system32下,苍天呐,我崩溃了!取消注释,我全做完了,现在不就是动态链接库文件嘛!一不做二不休,我直接把php\ext目录下的所有动态文件都拷贝到了system32下,丫的,缺少自己找吧!

同时,为了省事儿,我把httpd.conf文件里的LoadModule全都解禁了!然后重启服务器,接着,悲剧再次上演!

Apache服务都起不来啦!T_T

微博桌面截图_20130517162719

进服务启动Apache,提示服务启动失败 错误1067(崩溃!)

启动服务

查看日志服务器

日志

看到这个日志,一头雾水,嘛意思?咋解决?

想查看为什么报错,去网上搜了一下,需要一个php-errors.log的日志文件,这样可以查看到报错的原因。挨个搜了一遍,貌似没有啊!于是打开php.ini文件,发现,确实没有,算了,自己配置一个吧。

设置php-errors.log文件

; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On

(在第316~319行处开启错误日志功能)

;error_log = filename
error_log= "C:\AppServ\php5\php-errors.log"

(在第364行处,有这个提示信息。)

此时保存文件,再次启动Apache服务,依然报错!

进入C:\AppServ\php5\php-errors.log,查看错误日志,哇哦~~神奇的一刻出现了耶!

查询php-errors.log

[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_fdf.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_filepro.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_ifx.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_interbase.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_mhash.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_mssql.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_msql.dll' - 找不到指定的模块。
in Unknown on line 0
[17-May-2013 14:15:18] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_oracle.dll' - 找不到指定的模块。
in Unknown on line 0

[17-May-2013 16:33:17] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_sybase_ct.dll' - 找不到指定的模块。
in Unknown on line 0

通过查询日志,我们得知,Apache启动失败的原因是由于部分模块找不到。

那么此时,我打开php.ini文件,将以上找不到指定的模块都注释掉。(这就是全部取消注释,偷懒所付出的代价啊!)

extension=php_mbstring.dll   /*该内容重复,可删除其一或注释*/
extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_exif.dll
;extension=php_fdf.dll           /*注释掉*/
;extension=php_filepro.dll     /*注释掉*/
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_ifx.dll             /*注释掉*/
extension=php_imap.dll
;extension=php_interbase.dll      /*注释掉*/
extension=php_ldap.dll
;extension=php_mbstring.dll    /*该内容重复,可删除其一或注释*/
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pgsql.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_sockets.dll
extension=php_sqlite.dll
;extension=php_sybase_ct.dll
extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_winbinder.dll

;extension=php_mbstring.dll 内容重复,如果都打开会报如下错误:(这是偷懒获得的意外收获啊!o(∩_∩)o 嘎嘎~~)

[17-May-2013 14:45:20] PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0

当屡次报错后,我崩溃了!查看apache的错误日志

[Fri May 17 16:42:40 2013] [notice] Digest: generating secret for digest authentication ...
[Fri May 17 16:42:40 2013] [notice] Digest: done

网络上给出的解决方法有两个:

1.复制php5ts.dll到apaceh的bin目录下或者系统目录下c:\windows\system32后,重启系统。

2.php目录下的libmysql.dll拷贝到到系统目录system32下。

正当我崩溃之时,受高人指点(感谢:51cto-赵云),我把php.ini里加载的模块又都重新注释掉,然后启动apache服务,成功

重新编辑php.ini,如下

;extension=php_mbstring.dll
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mysql
;extension=php_winbinder.dll

OK!

万事俱备,继续走流程,好不容易把数据库模块也弄齐了,弹框提示

Database server does not support the InnoDB storage engine.
数据库服务器不支持InnoDB存储引擎。
崩溃了?!悲剧再次

image

继续搜索咨询,(感谢:踏雪有痕,紫光矩阵提供技术支持和灵感)

查询phpmyadmin,发现确实不支持InnoDB

PHPMYADMIN

果断开启InnoDB

编辑my.ini文件,

注释掉#skip-innodb

命令查看

image

phpmyadmin

开启