阿帕奇

阿帕奇

如何在 Windows 上安装支持 PHP 的 Apache 和 MySQL 服务器没有使用任何现成的软件包,如 WAMPServer 或 XAMPP?

答案1

阿帕奇

首先,我建议你阅读平台特定说明适用于 Windows 的 Apache - 它解释了一些 Windows 特定的功能,例如作为其他操作系统上所没有且可能从未使用过的服务运行。

正如这些平台特定说明中提到的,Apache 不提供适用于 Windows 的二进制文件,但它们有几个提供二进制文件的第三方站点的链接,例如Apache 休息室

从该网站,我们可以下载 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\bin并运行httpd.exe,通常它不会打印任何错误。

如果你收到错误对话框,指出MSVCR110.dll你的系统缺少,则需要安装适用于 Visual Studio 2012 的 Visual C++ 可再发行组件- 与往常一样,出现提示时,选择适当的位版本: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

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

限制 Apache 仅可访问localhost-选修的

如果您为了开发目的而进行此项设置,您想确保除了您之外没有人可以访问它,您的防火墙应该已经处理好了这个问题,但是让我们通过告诉 Apache 只接受来自本地机器的请求来为其添加另一层安全性。

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

最后应该有一行Require all granted,这意味着任何人都可以访问此服务器。让我们Require local只允许从本地计算机访问。

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

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

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

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

保存文件,如果您已经在运行服务器,则重新启动它以便将我们的更改考虑在内,现在只有localhost您可以访问,其他所有人都会获得403 Forbidden

PHP

我建议你读一下官方 PHP 文档关于在 Windows 系统上安装它。

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

非线程安全版本仅在作为 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最有可能的工作

您可以通过创建一个类似于 inside 的文件并转到来测试您的 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,应该已经有一行注释了,只需取消注释该行即可。

现在从他们的下载页面- 或者直接使用这个直接链接

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

就是这样,Composer 现在已经在系统范围内安装并可以从任何地方使用 - 您可以尝试一下,只需打开一个新的命令提示符(您不能使用已经打开的命令提示符,因为它需要读取PATH由 Composer 安装程序设置的新变量)并输入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- 它们应该已经存在,取消注释它们。

完成后,你可以使用以下任一方式访问任何 MySQL 数据库mysqli或者PDO

MySQL

MySQL 安装程序下载页面下载网络安装程序mysql-installer-web-community-xxxxx.msi

我使用了 mysql-installer-web-community-5.6.21.1.msi。此答案上次更新时的最新版本:mysql-安装程序-web-社区-8.0.15.0.msi(查看帖子底部的编辑日期)。

安装程序将根据您的系统自动安装适当的版本(32 位或 64 位),尽管 MySQL 的位版本不必与 Apache 和 PHP 的位版本匹配,但使用 64 位版本仍然是有益的,因为您的系统支持它来利用更多功能3 GB 内存,这非常重要,因为数据库服务器往往会使用大量的 RAM。

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

一旦一切都安装完毕,安装程序将询问您一些基本的配置值,我建议禁用“打开防火墙端口进行网络访问”,除非您想从网络上的另一台机器访问数据库。

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

最后,您可以禁用无用的 MySQL Notifier,方法是右键单击托盘图标,进入操作 -> 选项,然后取消选中复选框Run at Windows Startup并应用。这将为您节省几 MB 的 RAM,并避免在启动时降低机器速度。

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

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

这是在 Windows 7 安装上测试的,它也应该可以在 Vista、Windows 8 和可能的 Windows Server 2008/2012 上正常工作 - 如果不是这种情况,请随意评论和/或投反对票。

答案2

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>

确保所有路径正确。如果您的 PHP 目录中没有php7apache2_4.dll,则可能是您下载了错误的包。

相关内容