xiaozhuaia 发表于 2018-12-22 07:21:17

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

  公元2013年5月17日,星期五。今天是个普通的日子,但对于我而言,这一天似乎充满着劫难。算了,不白话了,直接上苦情剧吧!
  今天部署测试服务平台,基于PHP网站的服务器架构。
  平台搭建
  平台软件:appserv-win32-2.5.9_PConline(朋友给的)
  该软件的特点就是安装完成之后,PHP,MySQL,Apache服务就全有了,而且基本不用过多配置,装完之后就可以满足一般的需求。
  文件默认路径部署情况
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780524E6q1.jpg
  php页面测试结果
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780530c1pt.jpg
  但问题出现了,所有的平台软件都并不是那么的尽善尽美,并不会100%的符合我们的应用需求,总有些地方是需要我们去手动修改的,比如模块之类的。
  笔者目前的方向并不是PHP,但目前笔者的很多朋友都在使用PHP,而且大家貌似都比较信任我(或许他们也太不认识其他人了吧(*^__^*) ),所以都向我咨询,而且吧,我的虚荣心又比较强,唉,没办法,每次遇到问题又着实头特,但为了虚荣也只能硬着头皮弄了,实在解决不了,就只能向高手求救!再次特别致谢ISA兄弟(不知道你是男的还是女的,先叫兄弟吧)给了我好多帮助和链接。好了,感恩到此,可以感动的流泪了!T_T
  网站部署
  感动结束,流泪止泣!继续说问题:
  平台装好了,设置一下系统环境变量,然后开始部署网站。
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780532hFPV.jpg
  网站是基于模版架构形式的,安装过程类似于软件安装一样
  第一步,同意协议
  第二步,配置参数
  第三步,配置数据库
  第四部,配置用户
  第五步,完成。
  第一步顺利通过,因为不同意就没有后文了!(T_T这就是现实啊!)
  爷们儿卡死在第二步,配置参数
  当网站部署进行到第二步的时候,系统提示mcrypt,curl模块未加载
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780534BwUp.jpg
  此时有点小纠结,不过也有点轻敌,以为加载了就完事儿了。索性使用regsvr32命令,但不幸的弹窗又出现了。(如图)
  已加载php_curl.dll,但没有找到DllRegisterServer输入点。
  无法注册这个文件。
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780536PRDP.jpg
  坑爹啊,加载完了,不能注册?(有点哭笑不得!)这下踏实了,确实不知道该咋整了!
  唉,上网搜搜再说吧
  搜了一堆资料,都说打开php.ini文件
  找到   
;extension=php_mcrypt.dll   
改成   
extension=php_mcrypt.dll //去掉前面的;使之生效   
然后复制libmcrypt.dll,php_mcrypt.dll到system32目录下。
  这是解决mcrypt模块加载的方法,试了试,貌似不管什么用,也怪我懒点,脑子活点,心想“不就是取消注释嘛,那我把注释全都取消,不就得了?”,于是我就这么干了,还别说,真管用,mcrypt终于加载了!
  但悲剧又来了,mcrypt是加载了,但点击下一步,系统提示curl还没加载呢,苍天,这可肿么办?
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780537E4gY.jpg
  于是又到网上搜资料,把php_curl.dll放到了system32,果断通过!(话说,我系统变量都设置好了,为啥就没起效果呢?)
  看看系统页面,都有了!
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780541dx8m.jpg
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780542tAIR.jpg   

  信心满满的进入第三步,果断再次受伤!
  数据库提示“必须加载pdo_mysql”
  PHP Extensions "pdo_mysql" must be loaded.
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780544D4AF.jpg
  唉,部署个网站容易嘛~~
  继续搜索,网上说的跟之前的内容一样,需要取消注释,并且把php_mysql.dll,php_pdo_mysql.dll,php_pdo.dll复制到system32下,苍天呐,我崩溃了!取消注释,我全做完了,现在不就是动态链接库文件嘛!一不做二不休,我直接把php\ext目录下的所有动态文件都拷贝到了system32下,丫的,缺少自己找吧!
  同时,为了省事儿,我把httpd.conf文件里的LoadModule全都解禁了!然后重启服务器,接着,悲剧再次上演!
  Apache服务都起不来啦!T_T
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780545Thpp.jpg
  进服务启动Apache,提示服务启动失败 错误1067(崩溃!)
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_13687805469sJp.jpg
  查看日志服务器
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368780550Fnjr.jpg
  看到这个日志,一头雾水,嘛意思?咋解决?
  想查看为什么报错,去网上搜了一下,需要一个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
   PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_fdf.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_filepro.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_ifx.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_interbase.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:Module 'mbstring' already loaded in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_mhash.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_mssql.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_msql.dll' - 找不到指定的模块。   
in Unknown on line 0   
PHP Warning:PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_oracle.dll' - 找不到指定的模块。   
in Unknown on line 0
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 嘎嘎~~)
   PHP Warning:Module 'mbstring' already loaded in Unknown on line 0
  当屡次报错后,我崩溃了!查看apache的错误日志
   Digest: generating secret for digest authentication ...   
Digest: done
  网络上给出的解决方法有两个:
  1.复制php5ts.dll到apaceh的bin目录下或者系统目录下c:\windows\system32后,重启系统。
  2.php目录下的libmysql.dll拷贝到到系统目录system32下。
  正当我崩溃之时,受高人指点(感谢:运维网-赵云),我把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存储引擎。   
崩溃了?!悲剧再次
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368784675Cgi2.png
  继续搜索咨询,(感谢:踏雪有痕,紫光矩阵提供技术支持和灵感)
  查询phpmyadmin,发现确实不支持InnoDB
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368784680zAvY.jpg
  果断开启InnoDB
  编辑my.ini文件,
  注释掉#skip-innodb
  命令查看
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368784684Im8R.png
  phpmyadmin
http://longmuxiaozi.blog.运维网.com/attachment/201305/17/865148_1368784688XC8A.jpg



页: [1]
查看完整版本: 记2013年5月17日,php部分模块加载失败案例