PHP教程

Windows安装PHP

一、环境要求

PHP最低要求的操作系统是Windows 2008/Vista,支持32位或64位(即x86或x64),但无法在Windows RT/WOA/ARM上运行。从PHP 7.2.0开始,不再支持Windows 2008和Vista。此外,PHP还需要Visual C运行时(CRT)库,许多应用程序依赖于它,因此可能已经安装了该库。

在编译x86版本的PHP时,需要下载x86版本的CRT库;而编译x64版本的PHP则需要x64版本的CRT库。如果系统已经安装了CRT库,安装程序会显示提示,不会对任何内容做出更改。CRT库的安装程序支持/quiet和/norestart命令行开关,因此可以通过脚本来运行它。

另外,微软的开发环境 Visual Studio 2019 包含了编译 PHP 的全部环境要求。

二、安装工具

  • Windows下使用 Apache 安装 PHP 应用程序: XAMPP 、WampServer 和 BitNami。
  • 在 Windows 上设置和配置 Nginx 需要更多的配置。详情可参考Nginx文档来获取更多的设置帮助。

三、系统推荐配置

1、OpCache

建议开启 OpCache, 此扩展默认已经包含到 PHP Windows 版本中, 它会自动编译和优化 PHP 脚本,并将它们缓存在内存中, 这样就不会在每次加载页面时动态编译它们。

在 php.ini 配置中设置:

示例 #1 推荐的 OpCache 配置

opcache.enable=On
opcache.enable_cli=On

然后重新启动WEB服务器即可。

2、WinCache

推荐在IIS中使用WinCache,尤其是在共享虚拟主机环境或使用网络文件存储(NAS)时。所有的PHP应用程序都能自动享受到WinCache的文件缓存功能,使得文件系统操作被缓存在内存中。WinCache还能缓存内存中的用户对象,并在php.exe 或 php-cgi.exe进程之间共享它们,即在请求之间共享对象。许多主流的Web应用程序都有一个插件、扩展或配置选项,可以使用WinCache的用户对象缓存。如果需要高性能,建议在应用程序中使用对象缓存,并在php.ini配置中进行设置。

示例 #2 推荐的 WinCache 配置:

extension=php_wincache.dll
wincache.fcenabled=1
wincache.ocenabled=1 ; removed as of wincache 2.0.0.0

3、IIS 配置

在 IIS 管理器中,安装 FastCGI 模块,并将 `.php` 后缀映射到 PHP-CGI.exe 文件的真实路径 (注意:不是 PHP.exe)。可以使用 APPCMD 命令行工具来编写 IIS 配置脚本。

4、数据库

如果需要使用数据库服务器,PHP提供了相应的扩展来进行操作;如果的网站流量不是很大,可以将数据库服务器与Web服务器运行在同一台机器上。大多数广泛使用的数据库都提供了适用于Windows系统的版本。(PHP 内置了 mysqli 和 pdo_mysql 扩展)

四、手动安装PHP

1、选择Web服务器

(1)IIS

IIS 是 Windows 内置的服务。在 Windows 服务器版本上,请使用服务器管理(Server Manager)来添加 IIS 规则,同时需要设置 CGI 角色规则。在 Windows 桌面版本上,需要使用控制面板中的 "添加/删除程序" 功能来添加 IIS,请参阅微软的官方文档。 对于桌面 web app 开发者,也可以选择 IIS/Express 或 PHP Desktop。

示例 #1 命令行下配置 IIS 和 PHP:

@echo off
REM download .ZIP file of PHP build from http://windows.php.net/downloads/
REM path to directory you decompressed PHP .ZIP file into (no trailing \)
set phppath=c:\php
REM Clear current PHP handlers
%windir%\system32\inetsrv\appcmd clear config /section:system.webServer/fastCGI
REM The following command will generate an error message if PHP is not installed. This can be ignored.
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']
REM Set up the PHP handler
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='%phppath%\php-cgi.exe']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath%\php-cgi.exe',resourceType='Unspecified']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script
REM Configure FastCGI Variables
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='%phppath%\php-cgi.exe'].instanceMaxRequests:10000
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%\php.ini']"

(2)Apache

针对Windows系统,有几个可用的Apache版本可供选择。推荐使用由ApacheLounge编译的Apache,但也可以考虑其他选项,如XAMPP、WampServer和BitNami,它们提供了自动安装工具。PHP可以在带有mod_php或mod_fastcgi的Apache上使用。使用mod_php时,需要与同一版本的Visual C和相同CPU架构(x86或x64)编译的Apache TS版本配套使用。

2、选择编译版本

从 Windows 专用站点下载适合产品环境使用的 PHP 预编译版本:http://windows.php.net/download/。

所有的编译都经过优化(PGO),并且 QA 和 GA版本都经过彻底测试。PHP 编译版本有四种类型:

  • Thread-Safe(TS) - 线程安全,用于单进程 web 服务器,例如带有 mod_php 的 Apache;
  • Non-Thread-Safe(NTS) - 非线程安全,用于 IIS 和其他 FastCGI web 服务器(使用带有 mod_fastcgi 的 Apache),并且推荐命令行脚本也用此版本;
  • x86 - 用于 32 位系统;
  • x64 - 用于 64 位系统。

五、命令行运行PHP

要在命令行下运行 PHP,可以无需对 Windows 做任何改动。

C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

但是有几个很容易的步骤可以使其更加简便,某些步骤可能已经在之前完成了,不过还是在这里重复说明以便提供一个完整的步骤序列。

注意:PATH 和 PATHEXT 都是在 Windows 下已有的重要环境变量,要留意不要覆盖了其内容,仅仅是向其中添加内容。

1.将 PHP 可执行文件(php.exe,php-win.exe 或者 php-cli.exe)的路径添加到 PATH 环境变量中去;

2、将 .PHP 后缀添加到 PATHEXT 环境变量中去。可以在修改 PATH 环境变量时同时进行。要修改的是 PATHEXT 环境变量而不是 PATH 环境变量。

注意:把 .PHP 放置到什么位置将决定具有相同文件名时运行的优先级。例如将 .PHP 放到 .BAT 之前将导致如果有同名的 PHP 脚本和批处理文件,则 PHP 脚本会运行。

3、将 .PHP 后缀关联为一种文件类型,用以下命令完成:

assoc .php=phpfile

4、将 phpfile 文件类型关联到适当的 PHP 可执行文件,用以下命令完成:

ftype phpfile="C:\php\php.exe" -f "%1" -- %~2

按照以上步骤将使 PHP 脚本可以在任何目录下运行,不需要输入 PHP 可执行文件名以及 .PHP 后缀,并且所有参数都会被传递给脚本来处理。以下例子说明了可以手工修改的注册表项目变化。

示例 #1 注册表变化:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\php\\php-win.exe,0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"

有了这些改变之后,本页顶端第一个例子中的命令可以写成这样:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3

或者如果 "C:\PHP Scripts" 路径位于 PATH 环境变量中的话:

script -arg1 -arg2 -arg3

注意:不过如果想要通过此技巧将 PHP 脚本作为命令行管道过滤器的话,有个小问题。例如以下例子:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3

或者

dir | script -arg1 -arg2 -arg3

此时脚本只是挂起,没有输出任何内容。要解决此问题,还需要做一个注册表修改。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001

六、Apache 2.x安装PHP

接下来讲解Microsoft Windows系统中针对 Apache 2.x 安装 PHP 的指导与说明。建议先阅读Apache文档适用于Windows的Apache 2.x的使用说明,以便更深入地理解Apache 2.x服务器的基本知识。

下载最新版本的Apache 2.x和相应的PHP版本,完成手动安装步骤后,再回来将PHP集成到Apache中。在Windows下,有三种方法可以使PHP与Apache 2.x一起工作:handler、CGI和FastCGI方式。你可以选择其中一种方式来运行PHP。

注意:记住当在 Windows 环境下的 Apache 配置文件中添加路径值时,所有的反斜线,如 c:\directory\file.ext,应转换为正斜线: c:/directory/file.ext。对目录来说,也必须由斜线结尾。

1、Apache handler安装

需要将以下几行加入到 Apache 的 httpd.conf 配置文件中以加载 Apache 2.x 的 PHP 模块:

示例 #1 PHP 在 Apache 2.x 中作为 handler:

# 在 PHP 8.0.0 之前,模块的名称是 php7_module
LoadModule php_module "c:/php/php8apache2_4.dll"
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# 配置 php.ini 的路径
PHPIniDir "C:/php"

注意: 必须使用实际的 PHP 路径替换掉上例中的 c:/php/。 确保在 LoadModule 指令中引用的文件位于所指定的位置。 PHP 7 使用 php7apache2_4.dll, PHP 8 使用 php8apache2_4.dll。

2、CGI运行PHP

要更好地理解在 Apache 下运行 CGI,请参阅Apache CGI 文档。要将 PHP 以 CGI 方式运行,需要将 php-cgi 文件放入到用 ScriptAlias 指令所指定的 CGI 目录中。然后需要给 PHP 文件中添加 #! 的一行来指明 PHP 可执行文件的位置:

示例 #2 Apache 2.x 下 CGI 方式的 PHP

#!C:/php/php.exe
<?php
phpinfo();
?>

3、FastCGI运行PHP

以 FastCGI 方式运行 PHP 比起 CGI 方式有很多优点。设定的方式很直接从https://www.apachelounge.com 取得 mod_fcgid,该站点有 Win32 可执行文件的下载。按照下载文件中的指示安装此模块。按以下方法配置 web 服务器,注意用自己系统上的路径替换其中相应的内容:

示例 #3 配置 Apache 以 FastCGI 方式运行 PHP:

LoadModule fcgid_module modules/mod_fcgid.so 
# php.ini 文件的位置
FcgidInitialEnv PHPRC "c:/php" 
<FilesMatch \.php$>
SetHandler fcgid-script
</FilesMatch>
FcgidWrapper "c:/php/php-cgi.exe" .php

此时具有 .php 后缀的文件将被 PHP FastCGI 所解析执行。

七、故障排除

1、在“文件管理器”中右键单击“临时目录”以获得权限;

2、IIS, 检查用户的 IIS_User 是否有修改文件的权限。可以从配置或 php info 中获取临时目录的位置。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录