# Windows 经常提到的问题

如何安装XAMPP？

  XAMPP在Windows平台有三个不同版本：

  安装程序：
  大概是安装XAMPP最容易的方法了。

  ZIP:
  为纯净软件爱好者提供的：XAMPP的标准zip压缩包。

  7zip:
  为网速慢的纯净软件爱好者提供的：XAMPP的7zip压缩包。

  注意：如果你解压文件的话，可能会被杀软误报毒。

  使用安装程序：

  XAMPP控制面板可以用于启动/停止Apache, MySQL, FileZilla和Mercury以及将它们安装为服务。

  通过ZIP安装

  解压ZIP压缩文件到您选择的文件夹中。 XAMPP被提取到子目录"C:\\xampp"选定的目标目录下。然后启动文件“setup_xampp.bat”进行配置以便XAMPP的配置调整到系统中。

  如果你选择根目录"C:\\"作为安装目标，你绝对不要启动"setup_xampp.bat"。

  就像安装版一样，你现在可以使用XAMPP控制面板来完成更多工作。

Does XAMPP include MySQL or MariaDB?

  Since XAMPP 5.5.30 and 5.6.14, XAMPP ships MariaDB instead of MySQL. The commands and tools are the same for both.

我如何免安装启动XAMPP？

  如果你将XAMPP解压到一个根目录，比如"C:\\"或者是"D:\\"，你就可以直接启动大多数服务器例如Apache或者MySQL而无需执行文件"setup_xampp.bat"。

  如果你想在一个U盘上面安装XAMPP的话，不使用安装脚本，或者在安装脚本里面选择相对路径应该会是更好的做法。因为在不同的PC上面U盘的盘符应该都是不一样的。你可以通过安装脚本在任何时候从绝对路径切换到相对路径。

  下载页面上的安装包版本应该是安装XAMPP的最简单的方式了。安装过程结束之后，你会在开始菜单-程序-XAMPP下找到XAMPP。你可以使用XAMPP的控制面板来启动/停止任意一个服务器或者是安装/卸载服务。

  XAMPP控制面板可以用于启动/停止Apache, MySQL, FileZilla和Mercury以及将它们安装为服务。

我如何启动和停止XAMPP？

  通用的控制中心位于XAMPP控制面板(感谢www.nat32.com)。它开始于：

  `\xampp\xampp-control.exe`

  您也可以使用一些批处理文件来启动/停止服务器：

  - Apache & MySQL 启动: `\xampp\xampp_start.exe`
  - Apache & MySQL 停止: `\xampp\xampp_stop.exe`
  - 启动Apache `\xampp\apache_start.bat`
  - 停止Apache `\xampp\apache_stop.bat`
  - 启动MySQL： `\xampp\mysql_start.bat`
  - 停止MySQL： `\xampp\mysql_stop.bat`
  - 启动Mercury邮件服务器： `\xampp\mercury_start.bat`
  - 停止Mercury邮件服务器： `\xampp\mercury_stop.bat`
  - 启动FileZilla服务器： `\xampp\filezilla_start.bat`
  - 停止FileZilla服务器： `\xampp\filezilla_stop.bat`
我如何检查是否一切正常？

  在你喜欢的浏览器中输入下面的链接：

  `http://localhost/` 或 `http://127.0.0.1/`

  You should see the XAMPP start page, as shown below.

我如何将一个服务器安装成为服务？

  你可以将XAMPP中的每一个服务器安装成为Windows服务。你也可以从XAMPP控制面板里面安装它。在这种情况下必须通过管理员权限运行控制面板或脚本。

  安装Apache服务：\\xampp\\apache\\apache_installservice.bat

  卸载Apache服务：\\xampp\\apache\\apache_uninstallservice.bat

  安装MySQL服务: \\xampp\\mysql\\mysql_installservice.bat

  卸载MySQL服务: \\xampp\\mysql\\mysql_uninstallservice.bat

  安装/卸载FileZilla服务: \\xampp\\filezilla_setup.bat

  Mercury: 没有服务可供安装

XAMPP准备好了吗？

  XAMPP是一个非常优秀而又实用的开发测试环境，XAMPP的配置是开放的，允许开发者任意去修改或配置适合您的开发环境。XAMPP并非商业运行环境，用于商业运作将是一个致命的环境！

  如下是XAMPP不安全的配置：

  1. MySQL数据库管理帐号 (root)没设置密码。
  2. MySQL数据库可以通过网络打开。
  3. ProFTPD uses the password "lampp" for user "daemon".
  4. Mercury和FileZilla的默认用户是已知的。

  所有的点都可能成为一个巨大的安全隐患。尤其是如果XAMPP是可以通过网络或你的局域网外的人访问的话。使用防火墙或一个（带NAT的）路由器也是有帮助的。在有路由器或者防火墙的情况下，你的电脑正常情况下是无法从外部互联网访问的。是否修复这些问题要取决于你。XAMPP安全控制台可以提供一点小的帮助。

  请在发布任何东西到网上之前做好XAMPP的安全。一个防火墙或者一个外部路由器只能让你达到一个比较低的安全水平。需要高一点的安全的话，你可以运行下XAMPP安全控制台并设置密码。

  如果你想要让你的XAMPP通过互联网访问的话，你需要访问下述网站来修复一些问题：

  `http://localhost/security/`

  借助安全控制台，您可以设置MySQL的“root”用户和phpMyAdmin的密码。您还可以给XAMPP的演示页启用一个认证。

  这个基于网络的工具不能修复任何附加的安全问题！尤其是FileZilla FTP服务器和Mercury邮件服务器，你必须自行保护它们。

如何卸载XAMPP？

  如果你使用安装包版本安装了XAMPP，请使用卸载工具卸载。卸载工具会删除掉所有的XAMPP的文件并会卸载掉已经安装的服务，包括XAMPP自身。我们强烈推荐你使用卸载程序移除XAMPP的安装。请在卸载之前备份你所有想保留的文件。

  如果你使用zip或者7zip版本安装了XAMPP，请关掉所有的XAMPP服务器并退出控制面板。如果你安装了服务，也需要卸载并关闭他们。现在只需要简单的把XAMPP所在文件夹一删就完事了，不会再有需要清理的任何注册表项或者环境变量啦。

XAMPP的“lite”版本是什么玩意？

  XAMPP Lite（意思是“轻的”或者“轻量级的”）是一个更小的XAMPP的组件合集，推荐用来做一些只需要PHP和MySQL的快速的工作。像Mercury邮件或者是FileZilla的FTP服务器在这个版本里都是没有的。

我应该把我的web内容放在哪里呢？

  所有www文档的根目录都是\\xampp\\htdocs。如果你在目录里放一个文件“test.html”，你可以通过这个URL访问它：http://localhost/test.html。

  至于"test.php"呢？用"http://localhost/test.php"就可以啦。一个简单的测试脚本可以这么写：

  `<?php
  echo 'Hello world';
  ?>`

  想给你的web服务器设一个新的子目录？只需要在目录\\xampp\\htdocs新建个文件夹就行了（最好不要空格并且只使用英文字母和数字），并且建一个测试文件然后访问它，例如http://localhost/new/test.php。

  更多细节

  HTML:
  可执行的： \xampp\htdocs
  允许的结尾： .html .htm
  => 基本的包

  SSI:
  可执行的： \xampp\htdocs
  允许的结尾： .shtml
  => 基本的包

  CGI:
  可执行的： \xampp\htdocs and \xampp\cgi-bin
  允许的结尾： .cgi
  => 基本的包

  PHP:
  可执行的： \xampp\htdocs and \xampp\cgi-bin
  允许的结尾： .php
  => 基本的包

  Perl:
  可执行的： \xampp\htdocs and \xampp\cgi-bin
  允许的结尾： .pl
  => 基本的包

  Apache::ASP Perl:
  可执行的： \xampp\htdocs
  允许的结尾： .asp
  => 基本的包

  JSP Java:
  可执行的： \xampp\tomcat\webapps\java (e.g.)
  允许的结尾： .jsp
  => Tomcat add-on

  Servlets Java:
  可执行的： \xampp\tomcat\webapps\java (e.g.)
  允许的结尾： .html (u.a)
  => Tomcat add-on

我可以移动XAMPP安装文件么？

  是的，当移动XAMPP文件目录之后，你必须执行一下"setup_xampp.bat"。在配置文件里的路径会在这一步之后被改变。

  如果你已经将任意一个服务器安装成了Windows服务，你必须先移除服务，移动之后你可以重新安装服务。

  警告：你自己的脚本的配置文件，例如你的PHP应用，是不会被调整的。但是你可以为安装工具写一个插件，借助这样一个插件，安装工具就也可以同时调整这些文件了。

访问WWW目录的时候指向的“默认起始页”的名称是什么呢？

  Apache的"DirectoryIndex"（目录起始页）功能的预设文件名是“index.html”或者“index.php”。每次当你访问一个文件夹的时候（例如http://localhost/xampp/），Apache会先找一下指定名称的文件，并且找的话会默认显示那个文件而不会再显示目录的文件列表啦。

我可以在哪儿修改配置呢？

  XAMPP几乎所有的设置都可以在配置文件里修改。只需要在文本编辑器里打开文件然后就可以按你的需要修改设置了。只有Filezilla和Mercury需要使用应用配置工具里自定义设置。

为啥XAMPP不能在Windows XP SP2下工作呢？

  微软在service pack 2 (SP2)里面提供了一个更加高大上的会自动启动的防火墙，这个防火墙会拦截掉Apache必需的80和443端口，然后Apache就启动不了了。

  最快的解决方案：

  把微软那个防火墙给它关了，然后再启动一下XAMPP试试。更好的解决办法是在安全中心里面给XAMPP定义一个例外。

  下述端口是提供给基本功能用的：

  Apache (HTTP): Port 80
  Apache (WebDAV): Port 81 Apache (HTTPS): Port 443 MySQL: Port 3306 FileZilla (FTP): Port 21 FileZilla (Admin): Port 14147 Mercury (SMTP): Port 25 Mercury (POP3): Port 110 Mercury (IMAP): Port 143 Mercury (HTTP): Port 2224 Mercury (Finger): Port 79 Mercury (PH): Port 105 Mercury (PopPass): Port 106 Tomcat (AJP/1.3): Port 8009 Tomcat (HTTP): Port 8080

为什么XAMPP不能在Vista上工作？

  用户帐户控制（UAC）

  在目录"C:\\program files"当中你是没有完整的写权限的，即便管理员也不行。或者你就只有有限的权限（例如".\\xampp\\htdocs"）了。在这种情况下你就不能编辑文件了。 解决方案： 通过浏览器（右键-安全）来提高你的权限或者禁用用户帐户控制（UAC）

  你已经在"C:\\xampp"将Apache/MySQL安装成Windows服务但你不能通过"XAMPP控制面板"启动/停止这些服务或者不能卸载它们。 解决方案： 从Windows使用服务管理控制台或禁用UAC。

  禁用用户帐户控制（UAC）

  为了禁用UAC，你需要使用程序“msconfig”。在msconfig当中找到“工具”，选择“禁用用户账户控制”然后保存你的更改。现在你必须重启一下电脑。同时你也可以再次启动UAC。

我如何检查md5校验值呢？

  想要比较文件，通常使用的办法是计算校验值。md5（消息摘要算法5）就是其中的一个生成校验值的标准。

  使用这个md5校验值你可以检查出来你下载的XAMPP包是不是完好的。当然你需要有一个工具来生成这个校验值。Windows用户可以使用微软的一个工具：

  可用性和文件校验和完整性验证程序的描述

  也可以使用其他能够生成md5的程序，例如GNU md5sum。

  安装好这样的一个程序（例如fciv.exe）之后，你可以完成如下的步骤：

  - 下载XAMPP（例如xampp-win32-1.8.2-0.exe）
  - 用于生成校验值的： `fciv.exe xampp-win32-1.8.2-0.exe`
  - 然后你就可以用你的校验值和在XAMPP主页找到的校验值进行比较了。

  如果两个校验值是一样的，就是好的。否则，要么下载文件损坏了要么是文件被修改过。

为啥我在php.ini里做的修改没有生效?

  如果在"php.ini"里做的修改没有生效，很可能是因为PHP用的是另外一个。你可以通过phpinfo()来检查这一点。访问这个网址 http://localhost/xampp/phpinfo.php 并找到Loaded Configuration File。这个值会告诉你PHP实际使用的php.ini。

  注意： 在修改php.ini之后你必须重启Apache这样Apache/PHP才能够读取设置。

卧槽！XAMPP里头有病毒！

  有些杀软会误报你懂的。通常他们会把xampp-manager.exe这个文件当成病毒。误报的意思就是本来不是病毒的东西被杀软错误的看做了病毒。我们每次发布新版XAMPP的时候都会用杀软扫一遍的。我们目前使用的是 Kapersky Online Virus Scanner. You can also use the online tool Virus Total for scanning XAMPP or send us an email to security (at) apachefriends (dot) org if you find any issue.

我如何配置我的杀软？

  我们已经添加好了所有运行这个打包好的web应用所需的必要组件和服务器软件，所以你会发现XAMPP会安装一大堆文件。如果你在一个开着杀软的Windows的机器上安装XAMPP应用，可能会明显的拖缓安装进程的速度，而且还可能会有服务器（如web服务器，数据库服务器）被杀软阻塞了。如果你有开着的杀软，请检查下列可以保证运行XAMPP而不造成性能问题的设置：

  - 给防火墙添加例外：针对Apache，MySQL或者其他任何的服务器。
  - 执行的时候扫描文件：如果你对所有文件都启动了杀软的扫描功能，服务器的可执行文件可能会被拖慢。
  - 扫描不同网址的流量：如果你在自己的机器上用XAMPP做开发，你可以在杀软的设置里排除掉localhost的流量监测。
为什么Apache服务器在我的系统上启动不了呢？

  这个问题可能是由这几种原因之一造成的：

  - 你开启了不止一个HTTP的服务器(IIS, Sambar, ZEUS以及别的什么)。只有一个服务器可以占用80端口。这个错误消息指出了这个问题：
    `(OS 10048)... make_sock: could not bind to adress 0.0.0.0:80 no listening sockets available, shutting down`
  - 你有其他的软件，例如也会阻断80端口的互联网电话软件“skype”。如果问题来源于skype，你可以进入skype找到操作 - >选项 - >连接 - >取消勾选“使用端口80作为备用端口”，然后重新启动Skype。现在应该可以正常工作了。
  - 你有一个阻断了Apache端口的防火墙。不是所有的防火墙都兼容Apache，而有的时候禁用防火墙是不够的，还得卸载掉它才行。这个错误信息是指向防火墙的：
    `(OS 10038)Socket operation on non-socket: make_sock: for address 0.0.0.0:80, apr_socket_opt_set: (SO_KEEPALIVE)`

  此外，如果Apache可以启动，但您的浏览器无法连接到它可能是由于以下原因之一：

  - 有些病毒扫描程序可能会像防火墙一样产生干扰并导致这个问题。
  - 你的XP Professional没有安装sp1。你必须至少安装一个SP1才能用XAMPP。

  提示： If you have problems with used ports, you can try the tool "xampp-portcheck.exe". Maybe it can help.

为什么我的Apache占用的CPU负载接近99%呢？

  有两种情况，要么是你的CPU确实达到上限了，要么你的浏览器能够连接到服务器但是啥也看不到（系统尝试加载页面但是失败了），不管是哪种情况你都可以在Apache的log文件里面找到下述信息：

  `Child: Encountered too many AcceptEx faults accepting client connections. winnt_mpm: falling back to 'AcceptFilter none'.`

  多道处理模块（MPM）回归到一个更加安全的执行模式，从而导致一些客户端的请求没有没有正确的执行。为了避免这样的错误，可以在"\\xampp\\apache\\conf\\extra\\httpd-mpm.conf"文件当中将可接受的过滤器"AcceptFilter"置为"none"。

为什么图片和样式表显示不出来？

  有时候显示图片和样式表会有问题，特别是如果这些文件位于网络驱动器上的时候。在这种情况下，您可以启用（或增加）一行，如果文件"\\xampp\\apache\\conf\\httpd.conf"中的以下行:

  `EnableSendfile off EnableMMAP off`

  这个问题也可能是由带宽调整软件，例如NetLimiter导致的。

How do I send email with XAMPP?

  To configure XAMPP to use the included sendmail.exe binary for email delivery, follow these steps:

  - Edit the XAMPP "php.ini" file. Within this file, find the [mail function] section and replace it with the following directives. Change the XAMPP installation path if needed. `sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"`
  - Edit the XAMPP "sendmail.ini" file. Within this file, find the [sendmail] section and replace it with the following directives: `smtp_server=smtp.gmail.com smtp_port=465 smtp_ssl=auto error_logfile=error.log auth_username=your-gmail-username@gmail.com auth_password=your-gmail-password`

    Remember to replace the dummy values shown with your actual Gmail address and account password. If you don't plan to use Gmail's SMTP server, replace the SMTP host details with appropriate values for your organization or ISP's SMTP server.

  - Restart the Apache server using the XAMPP control panel.

  You can now use PHP's mail() function to send email from your application.

我如何在MySQL里面设置一个root的密码？

  Configure it with the "XAMPP Shell" (command prompt). Open the shell from the XAMPP control pane and execute this command:`mysqladmin.exe -u root password secret`This sets the root password to 'secret'.

我可以使用自己的MySQL服务器么？

  可以的，只是不要启动XAMPP包里的MySQL就够了。请注意两个服务器不能在同一个端口上同时启动如果你已经设置了一个root的密码，请不要忘记修改这个文件：\\xampp\\phpMyAdmin\\config.inc.php。

我如何限制phpMyAdmin的外部访问呢？

  In the basic configuration of XAMPP, phpMyAdmin is accessible only from the same host that XAMPP is running on, at http://127.0.0.1 or http://localhost.

  当你能访问MySQL服务器之前，phpMyAdmin会提示你输入用户名和密码。不要忘记先给用户"root"设个密码哦。

How do I enable access to phpMyAdmin from the outside?

  In the basic configuration of XAMPP, phpMyAdmin is accessible only from the same host that XAMPP is running on, at http://127.0.0.1 or http://localhost.

  IMPORTANT: Enabling external access for phpMyAdmin in production environments is a significant security risk. You are strongly advised to only allow access from localhost. A remote attacker could take advantage of any existing vulnerability for executing code or for modifying your data.

  To enable remote access to phpMyAdmin, follow these steps:

  - Edit the apache\conf\extra\httpd-xampp.conf file in your XAMPP installation directory.
  - Within this file, find the lines below.

    `Alias /phpmyadmin "C:/xampp/phpMyAdmin/" <Directory "C:/xampp/phpMyAdmin"> AllowOverride AuthConfig Require local`

  - Then replace 'Require local' with 'Require all granted'.

  `Alias /phpmyadmin "C:/xampp/phpMyAdmin/" <Directory "C:/xampp/phpMyAdmin"> AllowOverride AuthConfig Require all granted`

  - Restart the Apache server using the XAMPP control panel.
PHP的IMAP支持在哪儿呢？

  默认的话，在XAMPP里面PHP对IMAP的支持是被停用的，因为对于某些家用的系统版本比如Windows 98会出现一些诡异的初始化错误。如果你用的是Windows NT系统的话，你可以打开文件"\\xampp\\php\\php.ini"并去掉";extension=php_imap.dll"这一行前面的分号来激活这个PHP扩展。它应该是这样的： `extension=php_imap.dll`

  现在重启一下Apache然后IMAP就好使啦。你可以使用同样的步骤来操作任何一个在默认配置里没有激活的扩展。

为什么一些PHP开源应用不能在Windows版的XAMPP工作呢？

  许多PHP应用或者扩展都是为linux写的，还没有被移植到Windows。

Can I delete the "install" directory after installation?

  最好不要这样。所有的附加组件和XAMPP的升级仍然是需要使用这个脚本的。

我如何激活eaccelerator？

  就像很多(Zend)扩展一样，你可以在"php.ini"里激活它。在这个文件里，启用这一行";zend_extension = "\\xampp\\php\\ext\\php_eaccelerator.dll""。它应该是这样子的： `zend_extension = "\xampp\php\ext\php_eaccelerator.dll"`

我如何修复我的MS SQL服务器的连接错误？

  如果mssql扩展加载到了php.ini，有时候当只有TCP/IP使用的时候会出问题。你可以从微软获取一个新的“ntwdblib.dll”来修复这个问题。请用新的替换掉位于"\\xampp\\apache\\bin"和"\\xampp\\php"的旧的文件。因为许可证问题，我们不能把这个文件的更新版本打包进XAMPP。

我如何使用PHP mcrypt扩展？

  为了这个，我们已经在社区里开了一个话题，关于例子和有效的解决方案：MCrypt主题

Do Microsoft Active Server Pages (ASP) work with XAMPP?

  不行。那个和带有Perl的Apache::ASP附加组件是不一样的。Apache::ASP只能运行Perl脚本，但是IIS上的ASP文件还会有正常的VBScript。不过对于ASP .NET，有一个第三方的Apache扩展模块可以使用。

How can I get XAMPP working on port 80 under Windows 10?

  By default, Windows 10 starts Microsoft IIS on port 80, which is the same default port used by Apache in XAMPP. As a result, Apache cannot bind to port 80.

  To deactivate IIS from running on port 80, follow these steps:

  - Open the Services panel in Computer Management.
  - Search for the 'World Wide Web Publishing Service' and select it.
  - Click the link to 'Stop the service'.
  - Double-click the service name.
  - In the 'Startup type' field, change the startup type to 'Disabled'.
  - Click 'OK' to save your changes.

  You should now be able to start Apache in XAMPP on port 80.

  For more information, refer to the 'Troubleshoot Apache Startup Problems' guide included with XAMPP or this forum post.

How can I use Microsoft Edge to access local addresses under Windows 10?

  If your local machine has the host name 'myhost', you will not be able to access URLs such as http://myhost in Microsoft Edge. To resolve this, you should instead use the addresses http://127.0.0.1 or http://localhost.

Where are the main XAMPP configuration files?

  The main XAMPP configuration files are located as follows:

  - Apache configuration file: \xampp\apache\conf\httpd.conf, \xampp\apache\conf\extra\httpd-xampp.conf
  - PHP configuration file: \xampp\php\php.ini
  - MySQL configuration file: \xampp\mysql\bin\my.ini
  - FileZilla Server configuration file: \xampp\FileZillaFTP\FileZilla Server.xml
  - Apache Tomcat configuration file: \xampp\tomcat\conf\server.xml
  - Apache Tomcat configuration file: \xampp\sendmail\sendmail.ini
  - Mercury Mail configuration file: \xampp\MercuryMail\MERCURY.INI