如何在Windows上手动安装Apache,PHP和MySQL?


48

如何在使用任何现成可用的软件包(例如WAMPServer或XAMPP)的情况下在Windows上安装具有PHP支持的Apache和MySQL服务器?

Answers:


65

阿帕奇

首先,我建议您阅读Apache for Windows 的平台特定说明 -它解释了Windows特定的一些功能,例如作为服务运行,这是您在其他OS上所没有的,并且以前可能从未使用过。

如这些平台特定说明中所述,Apache不提供Windows二进制文件,但是它们具有指向多个提供二进制文件的第三方站点的链接,例如Apache Lounge

从该网站,我们可以下载32位版本(win32)或64位版本(Win64)-如果您的操作系统是64位,则应始终尝试安装64位版本的软件,但是请注意,还将需要使用64位模块,这意味着如果您只有32位模块,请下载32位Apache。

这是我编写本文时使用的版本:Apache 2.4.10 Win64。上次更新此答案的最新版本:Apache 2.4.38 Win64(请查看文章底部的编辑日期)。

下载完成后,只需将Apache24文件夹解压缩到硬盘驱动器的根目录,这样您就可以找到类似的路径C:\Apache24\bin

打开命令行窗口(Windows + R,cmd然后按Enter键),将目录更改为C:\Apache24\binrun httpd.exe,通常不会显示任何错误。

如果出现错误对话框,指出MSVCR110.dll系统上缺少该对话框,则需要安装Visual Studio 2012Visual C ++ Redistributable-与往常一样,在出现提示时,选择适当的位版本:vcredist_x86.exe对于32位系统和vcredist_x64.exe64 位系统有点。

如果收到错误消息说它无法绑定到端口80,请检查另一个应用程序是否使用该端口-默认情况下,Skype已知使用端口80和443;例如,取消选中其高级连接设置中的“使用端口80和443作为传入连接的替代方法”,重新启动Skype以应用更改,然后您应该能够启动Apache而不会出现问题。

像这样的警告Could not reliably determine the server's fully qualified domain name现在可以忽略。

Windows防火墙可能会提示您允许Apache在特定网络上进行通信,我建议您使用默认设置:允许它在家庭和工作网络上使用,但不允许在公共/不受信任的网络上使用。

然后,打开浏览器并浏览到http://localhost,如果您看到一个页面,It works !则表明您的Apache安装正在运行。

现在,您可以通过在命令提示符下按Ctrl + C来停止当前运行的Apache。

如果您收到关于无法确定系统的完全限定域名的警告,请通过编辑C:\Apache24\conf\httpd.conf和编辑ServerName变量来解决它(该变量应已在注释中,只需取消注释并更改它):

ServerName <yourhostname>

<yourhostname>系统的主机名或替换localhost

最后,如果要在系统启动时自动运行服务器(即使没有人登录),也需要将其作为服务运行-在新的提升权限(以管理员身份)命令提示符下,键入:

httpd.exe -k install

就是这样,现在您在“服务”中有一个新服务(Windows + R,然后键入“ services.msc”,然后按Enter),名为“ Apache2.4”,您可以像其他任何Windows服务一样进行控制。

限制Apache的访问localhost只有- 可选

如果您出于开发目的进行此设置,则要确保除您之外的任何人都无法访问它,防火墙应该已经解决了这一问题,但是,让Apache接受来自本地的请求,让我们为其添加另一安全层仅机器。

打开Apache的配置文件C:\Apache24\conf\httpd.conf,搜索默认目录块<Directory "c:/Apache24/htdocs">

如果结尾,应该有一行Require all granted,这意味着任何人都可以访问该服务器。让我们做Require local一个只允许从本地机器访问的东西。

另外,您可以告诉Apache仅绑定到环回接口,这样即使您的防火墙和上述访问控制指令都失败了,服务器仍不会对整个Internet开放。

为此,找到Listen指令(默认情况下将其设置为80)并将其更改为以下内容:

Listen 127.0.0.1:80
Listen [::1]:80

第一行是不言自明的,第二行是第一行的IPv6等效项,括号在IPv6表示法中用于分隔地址和端口。

保存文件(如果您已经在运行服务器),然后重新启动它以考虑我们的更改,现在只有localhost访问权限,其他人将获得一个403 Forbidden

的PHP

我建议您阅读有关在Windows系统上安装的官方PHP文档

Windows的官方PHP下载页面下载最新的PHP二进制文件,选择与您的Apache安装的位版本匹配的线程安全版本(x86表示32位,x64表示64位)。

非线程安全版本仅当作为CGI二进制文件运行时- 在此处有更多信息。

我使用的版本是这样的:PHP 5.6.2 VC11 x64线程安全。最近一次更新此答案的最新版本:PHP 7.3.3 VC15 x64线程安全(请查看文章底部的编辑日期)。

PHP在硬盘驱动器的根目录下创建一个空文件夹,然后将先前下载的存档解压缩到该文件夹​​中,您应使用路径,如C:\PHP\ext,否则操作有误。

在中C:\PHP,将php.ini-productionphp.ini-development(取决于您想要的)重命名为php.ini

打开该php.ini文件,搜索extension_dir = "ext"并取消注释该行(删除第一行;)。这会将默认扩展名目录设置为ext(可以解析C:\PHP\ext并避免ext/像本文之前的版本一样手动添加所有扩展名的路径。

现在通过编辑将Apache配置为使用该PHP- C:\Apache24\conf\httpd.conf在所有LoadModule行之后,添加以下内容:

(后续为PHP 7

LoadModule php7_module "c:\php\php7apache2_4.dll"

<IfModule php7_module>

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    PHPIniDir "c:\php"
</IfModule>

(以下为PHP 5

LoadModule php5_module C:/PHP/php5apache2_4.dll

<IfModule php5_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

现在尝试通过打开命令提示符C:\Apache24\bin并运行来手动启动Apache- httpd.exe如果没有看到错误,则表明您的配置文件有效并且PHP很可能在工作

您可以通过创建一个文件一样测试你的PHP安装info.php<?php phpinfo();内部和去http://localhost/info.php-你应该看到了不少关于你的系统和你的PHP的安装和它的所有模块信息的。如果您收到其他类似“内部服务器错误”的信息,则表示出了问题。

现在,您可以终止当前的Apache进程(控制台中的Ctrl + C)并启动服务-以下部分不与Apache交互,并且可以在已经启动的服务器上完成。

作曲家- 可选

Composer是PHP中的依赖项管理工具,例如程序包管理器。它允许轻松安装PHP软件包,甚至整个框架。

Composer需要启用PHP OpenSSL扩展,因此让我们在中启用它C:\PHP\php.ini

使用文本编辑器的搜索功能搜索php_openssl.dll,应该已经有一条注释行,只需取消注释该行即可。

现在从其下载页面下载Composer的Windows安装程序-或仅使用此直接链接

按照说明进行操作,当提示您输入PHP的路径时,浏览C:\PHP并选择php.exe

就是这样,Composer现在已在整个系统范围内安装,可以在任何地方使用-您可以尝试一下,只需打开一个新的命令提示符即可(您不能使用已打开的命令提示符,因为它需要读取PATHComposer的新变量集安装程序),然后输入composer

您应该会得到一个漂亮的ASCII艺术徽标以及类似以下内容:

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

PHP MySQL扩展- 可选

如果要从PHP访问MySQL数据库,则需要启用允许您这样做的扩展,例如php_mysqliphp_pdo_mysql-我建议同时启用它们。

C:\PHP\php.ini在文本编辑器中打开PHP的配置文件,然后搜索php_mysqliphp_pdo_mysql-它们应该已经存在,请取消注释。

完成后,现在您可以使用mysqli或访问任何MySQL数据库PDO

的MySQL

MySQL Installer下载页面上,下载Web安装程序mysql-installer-web-community-xxxxx.msi

我使用了mysql-installer-web-community-5.6.21.1.msi。上次更新此答案的最新版本:mysql-installer-web-community-8.0.15.0.msi(请查看文章底部的编辑日期)。

安装程序将根据您的系统自动安装适当的版本(32位或64位),即使MySQL的位版本不必与Apache和PHP的位版本匹配,但使用64位版本的系统仍然有益系统支持它以利用超过3 GB的RAM,这非常重要,因为数据库服务器倾向于使用大量RAM。

按照安装程序中的步骤进行操作,如果要为开发而安装它,那么Developer default它将是您的最佳选择,它还将安装MySQL Workbench(它是本机GUI客户端),从而避免了您必须安装慢速的基于Web的工具,例如如果您不习惯使用命令行客户端,请使用PHPMyAdmin。

安装完所有内容后,安装程序将询问您一些基本配置值,除非您要从网络上的另一台计算机访问数据库,否则我建议禁用“打开防火墙端口以供网络访问”。

设置root密码-如果仅用于开发目的并且您的防火墙阻止来自网络的传入连接,则无需使用强密码。

最后,您可以通过以下方法禁用无用的MySQL通知程序:右键单击任务栏图标,进入“操作”->“选项”,然后取消Run at Windows Startup选中该复选框并应用。这样可以为您节省几MB的RAM,并避免在启动计算机时降低计算机的速度。

就是这样,您现在有了一个功能齐全的WAMP服务器,它可以作为服务运行,并且不依赖于任何用户(即使没有人登录也可以访问)。

请注意,我不知道它的安全性,出于开发目的,我会说这是相当安全的,因为您的防火墙应该阻止Apache(端口80和443)和MySQL(端口3306)的传入连接。

这已在Windows 7安装上进行了测试,它在Vista,Windows 8以及可能的Windows Server 2008/2012上也应该可以正常工作-如果不是这样,请随时发表评论和/或投票。


3
我只是注意到,可能有必要在php.ini中取消注释Windows的extension_dir =“ ext”行。
chivvijim 2014年

@jaffamcneill确实你是对的,我更新了我的回答以解释这一点。

Ypu救了我的命。在过去的一周中,我一直在为此苦苦挣扎,但是phpinfo中不会启用mysql。我在您的帮助下解决了问题。万分感谢。
clever_bassi 2014年

我们什么时候应该使用mod_fcgid模块?我有一个问题,因为我同时有多个用户在系统上发出多个请求。我需要64位版本,因为32位内存不足(VFP ODBC要求大量报告)。您上面的设置是否可以正常工作,还是需要使用php_fcgid模块并将PHP作为cgi moodule安装?这总是让我感到困惑...感谢您的见解。
杰里米(Jeremy)

1
MSVCR110.dll错误出现时(在当前的Apache版本上),我最终安装了Visual C ++ Redistributable 2010 SP1。后来我得到了有关该文件的另一个错误VCRUNTIME140.dll,这需要我安装Visual C ++可再发行的Visual Studio 2015年
编码猴

8

PHP 7

截至2017年7月,以上答案中的说明已完全正常运行,但是,如果您想使用PHP 7,则必须在中添加以下行C:\Apache24\conf\httpd.conf,而不是该答案中的行(仅适用于PHP 5)[添加以下内容在所有LoadModule行之后]

LoadModule php7_module C:/PHP/php7apache2_4.dll

<IfModule php7_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

确保所有路径均正确。如果您不在php7apache2_4.dllPHP目录中,则可能是下载了错误的软件包。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.