作者:mobiledu2502883843 | 来源:互联网 | 2014-05-28 10:53
在我的前一篇日志中提到,搭建整个Apache+PHP+mysql+eclipse开发环境遇到了很多的问题,问题千奇百怪,网上的解决方案也是形形色色,在介绍了eclipse下php调试配置后,我总结出了一个整个搭建过程中解决问题的大杀器——Apache日志文件分析。本文通过列举各
在我的前一篇日志中提到,搭建整个Apache+PHP+mysql+eclipse开发环境遇到了很多的问题,问题千奇百怪,网上的解决方案也是形形色色,在介绍了
eclipse下php调试配置后,我总结出了一个整个搭建过程中解决问题的大杀器——Apache日志文件分析。本文通过列举各种各样的问题、错误,并分析如何通过Apache日志文件来最终解决问题。总的思路还是我那篇日志中提到的回归原点,多看文档,多看错误日志,只有知其然,并且知其所以然,才能解决问题。
对于遇到的各种问题,我的感觉是如此:
上次同样的版本这样配置就行,这次就不行了;
网上说把xxx.dll复制到system32下,我复制了还是没解决问题;
刚才重装Apache就解决了那个问题,为什么我现在重装那个问题又出来了;
为什么大家都说加上环境变量问题就解决了,我加了还是没能解决;
……
1.装了apache或者配置PHP后,服务启动不了: The Request opertion has
failed!
于是你去Google或者百度了一下,网上的前辈们确实总结的很详细(确实许多人都被这个问题害惨了),有的甚至总结出好多种原因:80端口被占用、软件冲突、httpd.conf配置错误、甚至winsock出错。那么你该怎么办呢,一个一个去试?还是听我的,来看看Apache错误日志吧。
Apache错误日志指的是Apache安装文件夹下logs/error.log文件,里面记录了所有的错误的具体环境,时间、原因等,并且信息、格式还可以自己去配置。
在查看了error.log后,其中我们在文件末尾发现了一句:… make_sock: could not bind to
address 0.0.0.0:80….
你是不是知道了问题所在了,80端口不能绑定,那么你就可以去看一下那些程序占用了80端口(IIS,迅雷,SQL
server的某个服务)或者你干脆把Apache端口改成8081,总之这个问题解决了。
2. 还是同样的错误 The Request opertion has failed! 只不过是在你加了LoadModule
php5_module C:/php/php5apache2.dll
PHPIniDir “C:/php” 这两句之后,就错了,网上也有各种求助的。来看看error.log中怎么说:Syntax
error on line 130 of …httpd.conf: Cannot load
C:/php/php5apache2.dll into server: The specified module could not
be found…. 你是不是该看看你有没有这个文件了,或者你确实有这个文件,但你是不是添了相对路径而忘了添加环境变量呢。
3.我确实有这个文件,但还是错了,那么log会是:Cannot load C:/Program
Files/PHP/php5apache2.dll into server: The specified module could
not be found.
那么它没说这个文件没有,而是说模块没找到,那么你是不是把模块文件填错了,本来应该填php5apache2_2.dll的,你填成了
php5apache2.dll,或者是版本错了,那么你可以去搜一下php5apache2.dll这个文件有什么问题,我想范围应该小了不少。
4.
Apache启动都正常,但是我在登陆phpmyadmin的时候说没有加载所需要的mysql扩展或者mcrypt扩展,然后明明去掉了这两个扩展
dll那两行的分号,怎么会没有呢,一看error.log他就会告诉你,确实没找到,你的ext就没找到,你是不是该把extension_dir换成绝对路径试一下。
5.phpmyadmin登陆界面可以上去,但是一登陆就没反应IE说Internet Explorer cannot
display the webpage, Firefox说连接被重置,看一下错误日志:[Thu Jun 28 21:36:27
2007] [notice] Child 1128: Acquired the start mutex.
[Thu Jun 28 21:36:27 2007] [notice] Child 1128: Starting 250 worker
threads.
[Thu Jun 28 21:36:27 2007] [notice] Child 1128: Starting thread to
listen on port
80.这怎么办,搜索一下这个总比不知道搜索什么要好吧,终于找到了一个说要把libmysql.dll拷贝到system32下面,照做后终于解决了这个问题。下面我详细说一下这个问题,我解决它的经历或者有人为什么没有遇到这个问题有人遇到了,我们需要知道为什么拷贝到system32后才能工作:相比我们肯定会产生这样的想法,肯定是环境变量错了,拷贝到system32下面他找到了,而原来没找到这个文件,但是明明我是添加了PHP环境变量的呀,为什么呢:因为mysql下面也有这个文件,Apache加载了mysql下面的这个libmysql.dll文件,它和PHP不一致,所以始终错了,拷贝到system32之后是因为system32在环境变量path里面在最前面,而mysql和php的环境变量在后面,发生错误的原因也就是
mysql的环境变量在php的前面,所以优先找到了mysql下的libmysql.dll.
有的人没错,是因为他先添加了php的环境变量,mysql的环境变量是后面加上去的或者根本就没有。于是有人有试了一下,现在我错了,我把php的环境变量放在path的最前面,怎么还是找到的是mysql下的libmysql.dll呢,稍微一想就知道你换过之后系统并没有生效,那么重启一下吧。
5. 在加载zend
debugger插件时,时钟不成功。phpinfo里面一直没有,不知道问什么,那么你也可以看一下error.log文件了,它会告诉你failed
loading zenddebugger.dll或者not found,
那么你就知道了你写了相对路径是不合适的,或者是你把ts或者nts搞错了(