1、XAMPP无法启动Apache
Xampp的获得和安装都十分简单,你只要到以下网址:
http://www.apachefriends.org/zh_cn/xampp.html 下载xampp即可,我安装的是windows版本的Installer安装包,只要根据它的安装提示一路安 装下去就可以了,十分方便快捷。
不过,安装目录最好选择C盘之外的其它磁盘,据某些网友的经验,在Windonws7或Vista中,如果选择C盘安装,由于权限原因,会出现创建一些文件 失败的问题。如果你已经据有最高权限,可以直接装在C盘。
一般在windows XP或windows 7中,刚安装完xampp时,apache服务器是启动不了的。这个原因有很多,下面我来一一细说。
- 没有安装VC9的环境
要判断是否是这一问题十分简单,只要单独运行C:\xampp\apache\bin\httpd.exe时(这个是我的安装路径),提示“系统无法执行指定的程序”(这个 是用命令行运行后的提示),如果是直接双击httpd.exe,则会提示环境配置错误。
解决办法:直接下载vcredist_x86.exe。
以下是在PHP.net看到的提示信息:
VC9 Versions are compiled with the Visual Studio 2008 compiler and have
improvements in performance and stability. The VC9 versions require you
to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++
Runtime (x64) installed
按照链接下载了Microsoft Visual C++ 2008 Redistributable Package
(x86),就是那个vcredist_x86.exe,一个运行时环境,使用户能够在未安 装 Visual C++ 2008 的计算机上运行使用
Visual C++ 开发的应用程序。装好后启动Apache,一切正常。
- 端口被其它程序占用
有时,并不是安装完VC9环境就可以直接运行Apache,其中一个重要的原因,便是Apache服务器所使用的端口被其它程序占用了,经典代表:迅雷。
解决办法:
1.80端口冲突,解决方法:
打开目录C:\xampp\apache\conf(我的安装目录为C:\xampp)下的httpd.conf文件,将Listen 80和
ServerName localhost:80中的80改为8081或 其它值(尽量不要使用0-1023端口,这个是系统保留端口),要保持一致。
2.监听端口443冲突,解决方法:
打开目录C:\xampp\apache\conf\extra (我的安装目录为C:\xampp)下的httpd-ssl.conf文件,将Listen 443这句注释掉:# Listen 443或将443 改为4433或其它值(尽量不要使用0-1023)。
3.Apache启动后又马上停止,一种情况是,Apache已经正常启动,只是Xampp的控制面板没有显示而已,你可以通过在浏览器中输入 http://localhost:8081,如果能直接进入Apache服务器的控制页面就是没有问题的了。另一种情况,原因可能是由于安装了oracle10g,与其中的 perl5lib变量发生了冲突,解决方法有3种:
(1) 打开目录C:\xampp\apache\conf(我的安装目录为C:\xampp)下的httpd.conf文件,
将Include "conf/extra/httpd-perl.conf"注释掉:# Include "conf/extra/httpd-perl.conf"。
(2) 打开目录C:\xampp\apache\conf\extra
(我的安装目录为C:\xampp)下的httpd-perl.conf文件,找到LoadModule perl_module
modules/mod_perl.so,在下面一行增加PerlSwitches –T,保存文件即可。
(3) 修改环境变量:在环境变量path中增加C:\xampp\perl\lib; C:\xampp\perl\site\lib;即可。
前两种方法的任一种都能解决我遇到的apache启动后又马上停止的问题,第3种方法我遇到的是没显示,但已经运行,至于另一种情况可能对某些网友有 用,所以也把它写了出来,以供参考。
其它方法:
下面的解决方法也是网友在实际中用到的,不过本人并不推荐。
原因在于,可以更改服务器配置,就尽量不要动操作系统的环境和配置,要不然,以后其它软件出问题,你也不知道是不是这个系统设置惹的祸。
当然,如果你对你的操作系统足够熟悉就另当别论。
而现在我只是写出来,供大家参考,也许由于你的原因特殊,正好解决你的问题。
1 关闭占用80端口的进程。
在“运行”中输入cmd命令,打开dos窗口,输入命令:netstat –abn –>D:\port.txt或命令netstat
–ano|findstr 80命令,打到占用80端口的进程,然 后打任务管理器窗口,关闭该进程。此方法治标不治笨,执行比较麻烦,不推荐使用。
2 修改网络设置
(1) 网上邻居——本地连接——属性——internet协议(TCP/IP)——属性——高级——wins标签——去掉“启用LMHOSTS查询(L)”前的勾。
(2) 控制面板——Windows防火墙——“高级”标签——本地连接——设置——“服务”标签——勾选“安全web服务器(HTTPS)。
这种方法有些奇怪,说不清为什么,如果实在找不到办法了,可以一试。
2、XAMPP无法启动MySql
22:39:41 [mysql] Error: MySQL shutdown unexpectedly.
22:39:41 [mysql] This may be due to a blocked port, missing dependencies,
22:39:41 [mysql] improper privileges, a crash, or a shutdown by another method.
22:39:41 [mysql] Press the Logs button to view error logs and check
22:39:41 [mysql] the Windows Event Viewer for more clues
22:39:41 [mysql] If you need more help, copy and post this
22:39:41 [mysql] entire log window on the forums
启动xmapp的mysql时出现上述错误,错误写的很简单,说是端口问题,其实这里的错误根本不是端口的问题,那么真正的错误在那里查看呢,点击xmapp的log按钮,在点击菜单项的mysqlerror.log,此时我们便可以查看具体的错误信息,其中出现的错误的内容如下:
InnoDB: Error: could not open single-table tablespace file .\nianhuo\wp_terms.ibd
InnoDB: We do not continue the crash recovery, because the table may become
InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.
这里写的也很明确,就是数据库表有问题,数据库已经损坏了。(我昨天刚刚安装好的xmapp,数据库压根就没动过,怎么可能会损坏数据库呢?但事实上数据库的确有问题了,不知道怎么弄的)
先说解决办法吧!
第一种:最次的方法,删除..\XAMPP\mysql\data目录下的ibdata1文件,然后启动你的mysql就行了,删除之后就意味着你的数据库就没了,你的网站之前的所有数据全部丢失,除非你有备份的!故此方法不推荐使用
第二种:点击xmapp的config按钮,点击菜单项的my.ini,在主键mysqld下面添加一个子健innodb_force_recovery=1,然后保存,启动mysql就行了。innodb_force_recovery=1的意思就是忽略数据库里面出现的坏页。这样网站就可以正常的打开了,现在赶紧备份一下你的数据库数据吧!
以上两种方法各有优劣,按照自己的实际情况操作,以免丢失重要的数据!