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 服务,实现开机自启动。