看在上帝的份上,请下载线程版本。我花了超过一个小时试图弄清楚为什么找不到 php5apache2.dll,并且在拼命地翻阅手册时,我发现它不存在于非线程版本中。
这确实需要在某个地方进行说明,而不是 PHP 5 结构,比如主页左侧谈论选择哪个 PHP 版本的段落,或者这部分谈论 Apache 的手册... 任何地方都可以,除了结构,真的。我永远不会想到去那里查看。
本节包含有关在 Microsoft Windows 系统上安装 Apache 2.x 的 PHP 的特定说明和提示。
注意:
请先阅读 手动安装步骤!
强烈建议您查阅 » Apache 文档 以了解 Apache 2.x 服务器的基础知识。此外,在阅读本文档之前,请考虑阅读 » Apache 2.x 的 Windows 特定说明。
下载最新版本的 » Apache 2.x 和相应的 PHP 版本。按照 手动安装步骤 进行操作,然后返回继续进行 PHP 和 Apache 的集成。
在 Windows 上,有三种方法可以设置 PHP 与 Apache 2.x 一起工作。PHP 可以作为处理程序、CGI 或 FastCGI 运行。
注意: 请记住,在 Apache 配置文件中添加路径值时,Windows 上的所有反斜杠,如 c:\directory\file.ext,都应转换为正斜杠:c:/directory/file.ext。目录可能还需要一个尾部斜杠。
要加载 Apache 2.x 的 PHP 模块,必须在 Apache httpd.conf 配置文件中插入以下几行。
示例 #1 PHP 和 Apache 2.x 作为处理程序
# before PHP 8.0.0 the name of the module was php7_module LoadModule php_module "c:/php/php8apache2_4.dll" <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> # configure the path to php.ini PHPIniDir "C:/php"
注意: 在上面的示例中,必须用 C:/php/ 替换实际的 PHP 路径。确保
LoadModule
指令中引用的文件位于指定位置。对于 PHP 7,请使用 php7apache2_4.dll;对于 PHP 8,请使用 php8apache2_4.dll。
强烈建议您查阅 » Apache CGI 文档 以更全面地了解在 Apache 上运行 CGI。
要将 PHP 作为 CGI 运行,需要将 php-cgi 文件放置在使用 ScriptAlias 指令指定为 CGI 目录的目录中。
需要在 PHP 文件中放置一行 #!
,指向 PHP 二进制文件的路径。
示例 #2 PHP 和 Apache 2.x 作为 CGI
#!C:/php/php.exe <?php phpinfo(); ?>
以 CGI 模式部署的服务器容易受到多种潜在漏洞的攻击。请阅读我们的 CGI 安全部分,了解如何防御此类攻击。
在 FastCGI 下运行 PHP 与作为 CGI 运行相比,有很多优点。以这种方式进行设置非常简单。
从 » https://www.apachelounge.com 获取 mod_fcgid
。该网站提供 Win32 二进制文件供下载。按照附带的说明安装模块。
按照以下所示配置您的 Web 服务器,注意调整所有路径,以反映您在特定系统上安装软件的方式。
示例 #3 配置 Apache 以在 FastCGI 下运行 PHP
LoadModule fcgid_module modules/mod_fcgid.so # Where is your php.ini file? FcgidInitialEnv PHPRC "c:/php" <FilesMatch \.php$> SetHandler fcgid-script </FilesMatch> FcgidWrapper "c:/php/php-cgi.exe" .php
看在上帝的份上,请下载线程版本。我花了超过一个小时试图弄清楚为什么找不到 php5apache2.dll,并且在拼命地翻阅手册时,我发现它不存在于非线程版本中。
这确实需要在某个地方进行说明,而不是 PHP 5 结构,比如主页左侧谈论选择哪个 PHP 版本的段落,或者这部分谈论 Apache 的手册... 任何地方都可以,除了结构,真的。我永远不会想到去那里查看。
如果您在尝试使用 PHPIniDir 或 LoadModule 指令时遇到问题,并且所有已给出的建议都无济于事,请仔细检查您的路径周围是否没有使用花括号(‘ ’ “ ”)。
发生在我身上是因为我从一个随机网站复制了这些语句。在我的文本编辑器中,差异几乎不可察觉,但对 Apache 来说,差异很大!
例如,这将不起作用
PHPIniDir “C:/PHP7”
但这将起作用
PHPIniDir "C:/PHP7"
在配备四核 AMD A6-3400M 的 Gateway NV75S 笔记本电脑上,在 Windows 7 Home Premium 上安装 Apache 和 PHP
我只需要使用这些程序在我的笔记本电脑上测试我的网站。我有 HTML 和 PHP 文件。我不需要 MySQL,因为我使用 html5 存储。
获取和安装 Apache
1 在您的浏览器中,转到 h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(没有空格)
2 点击 httpd-2.2.22-win32-x86-no_ssl.msi
(这是一个自安装的可执行文件,没有加密... 没有安全套接字层)
(2.2.22 是 2012 年 4 月 25 日的最新版本)
3 下载后点击 httpd-2.2.22-win32-x86-no_ssl.msi 文件
(在 Chrome 中单击文件选项卡一次,或双击 Downloads 中的实际文件)
4 点击下一步
5 点击我接受许可协议中的条款
6 点击下一步
7 点击下一步
8 在最上面的框中输入 localhost
9 在中间的框中输入 localhost
10 在最下面的框中输入 [email protected]
11 点击下一步
12 点击下一步
13 点击下一步
14 点击安装并等待
15 点击是允许该程序进行更改
16 点击完成
测试 Apache
1 在浏览器的地址栏中输入 localhost(我使用 Chrome),或输入 h t t p : / / l o c a l h o s t
(没有空格)
2 应出现消息 It works!。
获取和安装 PHP
1 在您的浏览器中,转到 h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(没有空格)
2 点击 PHP 5.3(5.3.10)VC9 x86 线程安全下的安装程序链接
(忽略侧边栏上的“不要使用 VC9 版本与 apache.org 二进制文件一起使用”的评论)
3 下载后点击 php-5.3.10-Win32-VC9-x86.msi 文件
(在 Chrome 中单击文件选项卡一次,或双击 Downloads 中的实际文件)
4 点击下一步
5 点击我接受许可协议中的条款
6 点击下一步
7 点击下一步
8 点击 Apache 2.2.x 模块
9 点击下一步
10 点击浏览
11 双击 Apache Software Foundation
12 双击 Apache 2.2
13 双击 conf
14 点击确定
15 点击下一步
16 点击下一步
17 点击安装并等待
18 点击是允许该程序进行更改
19 点击完成
使用 Apache 测试 PHP
1 打开记事本
2 输入“左括号字符”?php phpinfo(); ?'右括号字符'
3 将该文件保存到 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs,文件名为 test.php
4 在浏览器的地址栏中输入 localhost/test.php(我使用 Chrome),或输入 h t t p : / / l o c a l h o s t / t e s t . p h p
5 应该出现标题为 PHP Version ... 的表格
完成
正如其他人提到的,在 PHP 的 Windows 下载页面上,请忽略有关不要为 Apache.org 版本的 Apache 下载 VC9 编译的安装程序的警告。
任何写下这些内容的人都是为了确保人们安装一个会破坏他们的 Apache 服务器的 PHP。(至少在 Windows 7 上是这样。)安装程序未能将正确的路径信息写入 httpd.conf,即使在手动修复后,Apache 也不会启动,因为缺少 dll 文件。
忽略那个愚蠢的警告,无论如何获取最新的安装程序。所有内容都正常工作,没有任何麻烦,也无需在 Google 上搜索 dll 文件。
****已安装并运行 1 - 飞速下降 - 更新****
安装在 Windows 8.1 XPS 12 - 戴尔 8GB 内存 128GB SSD -
说明 - 由于 Apache 最新版本导致 PHP 处理程序在安装时出现问题,因此产生了复杂情况。请按照以下步骤进行操作,即可立即运行。
获取和安装 Apache
1 在您的浏览器中,转到 h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(没有空格) - 您需要转到“其他文件”,“二进制文件”,“W32”,然后您的安装程序 MSI 将列出如下。
2 点击 httpd-2.2.25-win32-x86-no_ssl.msi
(这是一个自安装的可执行文件,没有加密... 没有安全套接字层)
(2.2.25 是 2014 年 6 月 4 日的最新版本)
3 下载完成后,点击 httpd-2.2.25-win32-x86-no_ssl.msi 文件
(在 Chrome 中单击文件选项卡一次,或双击 Downloads 中的实际文件)
4 点击下一步
5 点击我接受许可协议中的条款
6 点击下一步
7 点击下一步
8 在最上面的框中输入 localhost
9 在中间的框中输入 localhost
10 在最下面的框中输入 [email protected]
11 点击下一步
12 点击下一步
13 点击下一步
14 点击安装并等待
15 点击是允许该程序进行更改
16 点击完成
测试 Apache
1 在浏览器的地址栏中输入 localhost(我使用 Chrome),或输入 h t t p : / / l o c a l h o s t
(没有空格)
2 应出现消息 It works!。
获取和安装 PHP
1 在您的浏览器中,转到 h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(没有空格)
2 点击 PHP 5.3(5.3.10)VC9 x86 线程安全下的安装程序链接
(忽略侧边栏上的“不要使用 VC9 版本与 apache.org 二进制文件一起使用”的评论)
3 下载后点击 php-5.3.10-Win32-VC9-x86.msi 文件
(在 Chrome 中单击文件选项卡一次,或双击 Downloads 中的实际文件)
4 点击下一步
5 点击我接受许可协议中的条款
6 点击下一步
7 点击下一步
8 点击 Apache 2.2.x 模块
9 点击下一步
10 点击浏览
11 双击 Apache Software Foundation
12 双击 Apache 2.2
13 双击 conf
14 点击确定
15 点击下一步
16 点击下一步
17 点击安装并等待
18 点击是允许该程序进行更改
19 点击完成
使用 Apache 测试 PHP
1 打开记事本
2 输入“左括号字符”?php phpinfo(); ?'右括号字符'
3 将该文件保存到 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs,文件名为 test.php
4 在浏览器的地址栏中输入 localhost/test.php(我使用 Chrome),或输入 h t t p : / / l o c a l h o s t / t e s t . p h p
5 应该出现标题为 PHP Version ... 的表格
完成
在 FastCGI 下运行 PHP
除了在您的 httpd.conf 中以下内容之外
LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC "c:/php"
AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php
请记住将以下内容添加到默认的 <Directory "C:/apache/htdocs"> 块(或虚拟主机块)中
Options ExecCGI
这适用于 Windows 上 Apache 的最快架构,比作为 PHP 模块更快
在 httpd.conf 中启用 mod_proxy 和 mod_proxy_fcgi 并运行
setx PHP_FCGI_CHILDREN "15" /m
setx PHP_FCGI_MAX_REQUESTS "1000" /m
并下载
RunHiddenConsole.exe 并使用 c:\hidden\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b 127.0.0.1:9000 启动 PHP,并在 VirtualHost 上设置
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000#"
ProxyFCGIBackendType GENERIC
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "C:%{reqenv:SCRIPT_FILENAME}"
</Files>
重新启动 Apache 服务,享受乐趣。来自一位 Apache 的超级粉丝的致敬