Windows Server上安装部署WordPress(3):在IIS上安装配置PHP支持
在 Windows 操所系统上安装部署 WordPress ,本篇为 Windows Server 上安装部署 WordPress(3):在 IIS 上安装配置 PHP。由于篇幅太长,所以把整个在 Windows 上安装部署 WordPress 分成了几篇来写:
- Windows Server 上安装部署 WordPress(1):概要
- Windows Server 上安装部署 WordPress(2):安装 MySQL
- Windows Server 上安装部署 WordPress(3):在 IIS上安装配置 PHP 支持
- Windows Server 上安装部署 WordPress(4):在 IIS 上部署 WordPress 站点
- Windows Server 上安装部署 WordPress(5):IIS 下 WordPress 站点的固定 URL 链接格式设置
操作系统环境说明:
本文以英文版 Windows Server 2008 R2 IIS 7 为例,更高版本的Windows Server 2012、2016,IIS 8、IIS 10等,安装部署操作都是一样的。
下载 PHP 及 Visual C++ 应用程序运行时组件包
PHP for Windows 官方下载地址:http://windows.php.net/download。PHP 文件和 Visual C++ Redistributable下载地址在这个页面都可以找到,两个文件都比较小。
PHP 版本:
我使用的 PHP 版本是7.X。根据操作系统和选用 Web 服务器(IIS 或者 Apache)的不同,要下载不同的文件,下载页面也有详细说明。如上图:
- IIS:下载 VC15 x86 Non Thread Safe 或者 VC15 x64 Non Thread Safe 版本。
- Apache:下载 VC15 x86 Thread Safe 或者 VC15 x64 Thread Safe 版本。
Visual C++应用程序运行时组件包:
目前最近版本的 PHP 都是用 Microsoft Visual Studio Visual C++ 编译的,所以在 Windows 上运行 PHP,须要安装 Visual C++ 可再发行组件包。根据所下载 PHP文件所使用的编译器不同,系统上需要安装相应要求版本的 Visual Studio C++ 应用程序可再发行运行时组件包。PHP for Windows下载页面的左侧(上图红框有标注)有说明和下载地址,直接点击进行下载。比如:
- 如果下载的是PHP 7.2.1 VC15 x86 Non Thread Safe或者 VC15 x86 Thread Safe,那么就下载 Visual C++ Redistributable for Visual Studio 2017 x86。
- 如果下载的是PHP 7.2.1 VC15 x64 Non Thread Safe或者 VC15 x64 Thread Safe,那么就下载 Visual C++ Redistributable for Visual Studio 2017 x64。
- 如果下载的是PHP 7.1.13 VC14 x86 Non Thread Safe或者 VC14 x86 Thread Safe,那么就下载 Visual C++ Redistributable for Visual Studio 2015 x86。
- 如果下载的是PHP 7.1.13 VC14 x64 Non Thread Safe或者 VC14 x64 Thread Safe,那么就下载 Visual C++ Redistributable for Visual Studio 2015 x64。
安装Visual C++ Redistributable(C++ 应用程序运行时组件包)
双击下载好的Visual C++ Redistributable 文件,Agree,点击 Install,安装即可,比较简单。
在 IIS 上安装配置 PHP
确保 IIS 已开启 CGI 模块选项:
1. 打开 Windows Server Manager(服务器管理器),方式:
- Start(Windows 开始菜单) –> Control Panel(控制面板) –> Programs and Features(程序和功能) –> Turn Windows features on or off(启用或关闭 Windows 功能)。
- 或者Start(Windows 开始菜单) –> Administrative Tools(管理工具) –> Server Manager(服务器管理器)。
2. 在左侧导航树,依次展开点击Server Manager –> Roles –> Web Server(IIS),在右侧点击“Add Role Services”。
3. 在Select Roles Services(选择服务器角色) 界面,确保已选中“CGI”。如果之前未选中,则选中后依次点击”Next >” –> “Install”按钮进行安装开启。
安装 PHP:
1. 直接解压下载下来的 PHP zip包件,比如 C 盘根目录 C:\PHP。
2. 打开 C:\PHP 目录,复制 php.ini-production 文件,去掉“-production”重命名为 php.ini。
3. 修改 php.ini 如下设置:
cgi.force_redirect = 0 fastcgi.impersonate = 1 ;去掉前面分号";"注释,开启扩展模块 extension=curl extension=mysqli upload_max_filesize = 20M;最大允许上传文件大小 post_max_size = 20M;最大POST数据限制 max_execution_time = 300;PHP脚本最大执行时间可以适当设置大一些,比如升级WordPress时可能超时报错 log_errors = On; 可选配置,当出现500错误时候,可以打开这个配置记录错误日志。 error_log = {path}\php_errors.log; 错误日志输出的文件名。也可以设置成“syslog” 输出到 Windows Event。 memory_limit = 1024M; 可选设置,可以解决错误"Allowed memory size of 134217728 bytes exhausted"
在 IIS 上配置PHP:
1. 打开 IIS。
2. 在 Features View(功能视图) 界面,双击 Handler Mappings(处理程序映射)。
3. 进入到 Handler Mappings(处理程序映射)界面。点击最右侧 Action(操作)区域里的 Add Module Mapping…(添加模块映射…)。
4. 在 Add Module Mapping(添加模块映射)界面:
- Request path(请求路径):输入*.php。
- Module(模块):选择 FastCgiModule。–如果IIS没有开启CGI是没有FastCgiModule选项的。
- Executable(可执行文件):C:\PHP\php-cgi.exe。
- Name(名称):PHP FastCGI。–名称随便起。
点击,OK(确定)按钮。在 Add Module Mapping(添加模块映射)对话框中点击 Yes(是)。
5. 在 Features View(功能视图) 界面,双击 FastCGI Settings(FastCGI设置)。
6. 在 FastCGI Setting(FastCGI 设置)界面,右键C:\PHP\php-cgi.exe,点击Edit…(编辑…)。
7. 在 Edit FastCGI Application(编辑 FastCGI 应用程序) 对话框界面,设置 Monitor changes to file(监视对文件所做的更改)为:C:\PHP\php.ini。—如果 php.ini 配置文件更改,PHP FastCGI 进程会回收,使更改生效。
8. 测试 PHP 是否安装成功,php 程序能否运行:
在 IIS 上已存在的站点(或者新建一个站点)目录下新建一个 test.php文件,文件内容输入:<?php phpinfo(); ?>。然后在浏览器里访问这个文件地址。如果如下图,则说明 PHP 安装配置 OK。
到此 IIS上 PHP 就基本安装配置完成了。
注意事项
PHP 小版本更新比较快,但是老有 bug。很多人喜欢下载最新版本,永远保持程序升级到最新版本,但是不见得 WordPress 网站就能顺利运行。一般 WordPress 主程序没有什么问题,在各个 PHP 版本运行都还可以,但是主题和插件就不一定了,所以如果网站运行正常,没有什么大问题和功能影响,建议不要随意升级 PHP,我有好几次升级完了报错又退回去,好在 PHP 安装简单。
extension_dir = “D:\php\ext” 需要开启并添加ext文件路径,否则会500报错。
我在第四部完了,提示PHP Fatal error: Uncaught mysqli_sql_exception: Table ‘shujuku1.wp_options’ doesn’t exist in D:\websites\demo.wordpress.com\wp-includes\wp-db.php:2056 Stack trace: #0 用的是MYSQL8.0,PHP也是5.8,WP也是新的为什么会这样
shujuku1.wp_options 不存在,是不是你的数据库配置DB_NAME写的不对呢?