php 类加载失败,记2013年5月17日,php部分模块加载失败案例

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

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

平台搭建

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

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

文件默认路径部署情况

fddd2faec81dc88cbad691bc20f3a44b.png

php页面测试结果

ac8009f428886255d42fe6be82c5817a.png

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

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

网站部署

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

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

c1aa1cffe2e908829f4439da750c57aa.png

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

第一步,同意协议

第二步,配置参数

第三步,配置数据库

第四部,配置用户

第五步,完成。

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

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

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

202a74a916b3a734c383204851e3495c.png

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

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

无法注册这个文件。

cec077ff9dcaec8bb7431e5e6f13e5bc.png

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

唉,上网搜搜再说吧

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

找到

;extension=php_mcrypt.dll

改成

extension=php_mcrypt.dll //去掉前面的;使之生效

然后复制libmcrypt.dll,php_mcrypt.dll到system32目录下。

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

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

965946078af1416038f247347ffefdf5.png

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

看看系统页面,都有了!

35699dbd722657120bbd5a48e13ee864.png

781a976e18caa96bce92ccc84253d200.png

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

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

PHP Extensions "pdo_mysql" must be loaded.

813c9cd1c7b269ae2bdb53b2fc539e7e.png

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

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

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

Apache服务都起不来啦!T_T

5307eb50fa5e0d7e87251b6d0dcab369.png

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

f2022a527e02a45d70588c949facce46.png

查看日志服务器

1063997496b3480a355fbb57f13547f1.png

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

想查看为什么报错,去网上搜了一下,需要一个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存储引擎。

崩溃了?!悲剧再次

eb6d20b53e5f787c5db1d730af54540e.png

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

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

51458c1041786656c017260aa3229051.png

果断开启InnoDB

编辑my.ini文件,

注释掉#skip-innodb

命令查看

693240607fec95a9b03829ad285f63dc.png

phpmyadmin

fbe5fff3abc2408e14781049b0320af5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值