Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建


目录

1. 安装 Nginx 和 PHP

2. 配置 Nginx

3. 配置 PHP

4. 启动服务

5. ThinkPHP 配置

6. 常见问题排查


1. 安装 Nginx 和 PHP


安装 Nginx

1. 访问 Nginx 官网 下载 Windows 版本

2. 解压到指定目录,如 C:\nginx


安装 PHP

1. 访问 PHP 官网 下载 PHP(推荐 PHP 7.4 或更高版本)

2. 选择 Non Thread Safe (NTS) x64 版本

3. 解压到指定目录,如 C:\php


2. 配置 Nginx


基本配置

编辑 nginx/conf/nginx.conf 文件:


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   C:/wwwroot/phpnginx/thinkphp_layui/public;
            index  index.html index.htm index.php;
            
            # ThinkPHP 伪静态规则
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php?s=$1 last;
                break;
            }
        }

        # 启用 PHP 脚本处理
        location ~ \.php$ {
            root           C:/wwwroot/phpnginx/thinkphp_layui/public;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
        }
    }
}

注意事项


3. 配置 PHP


创建 php.ini 文件

1. 复制 PHP 目录中的 php.ini-developmentphp.ini

2. 编辑 php.ini 文件,启用必要的扩展:


extension_dir = "ext"

; 取消以下扩展前的注释(删除分号)
extension=curl
extension=fileinfo
extension=gd
extension=mbstring
extension=openssl
extension=pdo_mysql
extension=mysqli

; 设置时区
date.timezone = Asia/Shanghai

配置 PHP-FPM

1. 在 PHP 目录中找到 php-fpm.conf.default,复制为 php-fpm.conf

2. 编辑 php-fpm.conf,确保监听地址为:


listen = 127.0.0.1:9000

4. 启动服务


启动 PHP-FPM

打开命令提示符,执行:


cd C:\php
php-cgi.exe -b 127.0.0.1:9000

或者如果使用 PHP-FPM:


cd C:\php
php-fpm.exe

启动 Nginx

打开新的命令提示符,执行:


cd C:\nginx
start nginx

5. ThinkPHP 配置


项目目录结构

确保 ThinkPHP 项目结构如下:


thinkphp_layui/
├── app/
├── config/
├── extend/
├── public/
│   ├── index.php
│   ├── static/
│   └── ...
├── runtime/
├── vendor/
└── ...

数据库配置

编辑 config/database.php 文件:


return [
    // 默认使用的数据库连接配置
    'default'         => env('database.driver', 'mysql'),

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'              => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'          => env('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'          => env('database.database', 'thinkphp'),
            // 用户名
            'username'          => env('database.username', 'root'),
            // 密码
            'password'          => env('database.password', ''),
            // 端口
            'hostport'          => env('database.hostport', '3306'),
            // 数据库连接参数
            'params'            => [],
            // 数据库编码默认采用utf8
            'charset'           => env('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix'            => env('database.prefix', ''),
        ],
    ],
];

环境配置

在项目根目录创建 .env 文件:


APP_DEBUG = true

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = thinkphp
USERNAME = root
PASSWORD = your_password
HOSTPORT = 3306
CHARSET = utf8
PREFIX = tp_

6. 常见问题排查


"No input file specified" 错误


PHP 扩展缺失

如果安装页面提示缺少扩展,编辑 php.ini 文件启用相应扩展,然后重启 PHP-FPM。


权限问题

确保 Nginx 和 PHP-FPM 有足够权限访问项目文件。


日志检查


端口冲突

如果 80 端口被占用,可以修改 Nginx 配置使用其他端口,如 8080。


Nginx 常用命令


设置为 Windows 服务(可选)

使用 NSSM 工具可以将 Nginx 和 PHP-FPM 设置为 Windows 服务,实现开机自启动。