52 windows mysql web-development php webserver
如何在不使用任何现成的软件包(如 WAMPServer 或 XAMPP )的情况下在 Windows 上安装支持 PHP 的 Apache 和 MySQL 服务器?
小智 68
首先,我建议您阅读Apache for Windows的平台特定说明- 它解释了一些特定于 Windows 的功能,例如作为服务运行,而您在其他操作系统上没有这些功能,而且您以前可能从未使用过。
正如这些特定于平台的说明中所提到的,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\bin并运行httpd.exe,通常不应打印任何错误。
如果您收到一个错误对话框,指出MSVCR110.dll您的系统上缺少该对话框,您将需要安装Visual C++ Redistributable for Visual Studio 2012 - 一如既往,在出现提示时,选择适当的位版本:vcredist_x86.exe适用于 32 位系统和vcredist_x64.exe适用于 64位系统- 位的。
如果你收到一个错误,说它不能绑定到端口 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>
Run Code Online (Sandbox Code Playgroud)
替换<yourhostname>为系统的主机名或localhost.
最后,如果您想在系统启动时自动运行服务器(即使没有人登录),您也需要将其作为服务运行 - 在新的提升(以管理员身份)命令提示符下,键入:
httpd.exe -k install
Run Code Online (Sandbox Code Playgroud)
就是这样,现在您在“服务”中拥有一个名为“Apache2.4”的新服务(Windows+R,然后键入“services.msc”,然后按 Enter),您可以像控制任何其他 Windows 服务一样控制它。
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
Run Code Online (Sandbox Code Playgroud)
第一行是不言自明的,第二行是第一个的 IPv6 等效项,在 IPv6 表示法中使用括号来分隔地址和端口。
保存文件,如果您已经在运行服务器然后重新启动它以将我们的更改考虑在内,现在只有localhost访问权限,其他人都将获得403 Forbidden.
我建议您阅读有关在 Windows 系统上安装它的官方 PHP 文档。
从官方PHP for Windows 下载页面下载最新的 PHP 二进制文件,选择与您的 Apache 安装的位版本匹配的线程安全版本(x86 用于 32 位,x64 用于 64 位)。
非线程安全版本仅在作为 CGI 二进制文件运行时 - 更多信息请点击此处。
我使用的版本是这样的:PHP 5.6.2 VC11 x64 线程安全。上次更新此答案时的最新版本:PHP 7.3.3 VC15 x64 Thread Safe(查看帖子底部的编辑日期)。
PHP在硬盘驱动器的根目录创建一个空文件夹,然后将之前下载的存档解压缩到那里,您应该有一个类似 的路径C:\PHP\ext,否则您做错了什么。
在 中C:\PHP,将php.ini-production或php.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>
Run Code Online (Sandbox Code Playgroud)
(以下为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>
Run Code Online (Sandbox Code Playgroud)
现在尝试通过打开命令提示符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 现在已在系统范围内安装并且可以在任何地方使用——您可以尝试一下,只需打开一个新的命令提示符(您不能使用已经打开的命令提示符,因为它需要读取PATH由 Composer 设置的新变量)安装程序)并键入composer.
你应该得到一个漂亮的 ASCII 艺术标志和类似这样的东西:
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
Run Code Online (Sandbox Code Playgroud)
如果你想从 PHP 访问你的 MySQL 数据库,你需要启用允许你这样做的扩展,比如php_mysqli或者php_pdo_mysql- 我建议同时启用它们。
C:\PHP\php.ini在文本编辑器中打开 PHP 的配置文件并搜索php_mysqlior php_pdo_mysql- 它们应该已经存在,取消注释它们。
完成,现在您可以使用mysqli或访问任何 MySQL 数据库PDO。
在MySQL 安装程序下载页面上下载 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 密码 - 如果它仅用于开发目的并且您的防火墙阻止来自网络的传入连接,则不需要强密码。
最后,您可以通过右键单击托盘图标,进入操作 -> 选项,然后取消Run at Windows Startup选中复选框并应用来禁用无用的 MySQL 通知程序。这将为您节省几 MB 的 RAM,并避免在启动时降低机器的速度。
就是这样,您现在拥有了一个功能齐全的 WAMP 服务器,它作为一项服务运行并且不依赖于任何用户(即使没有人登录也可以访问)。
请注意,我不知道它的安全性,出于开发目的,我会说这是非常安全的,因为您的防火墙应该阻止 Apache(端口 80 和或 443)和 MySQL(端口 3306)的传入连接。
这是在 Windows 7 安装上测试过的,它也应该可以在 Vista、Windows 8 和可能的 Windows Server 2008/2012 上正常工作 - 如果不是这种情况,请随时发表评论和/或投反对票。
上述答案中的说明截至 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>
Run Code Online (Sandbox Code Playgroud)
确保所有路径都正确。如果您php7apache2_4.dll的 PHP 目录中没有,您可能下载了错误的软件包。
| 归档时间: |
|
| 查看次数: |
149128 次 |
| 最近记录: |