当前位置: 首页 > news >正文

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

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;
        }
    }
}

注意事项

  • 路径使用正斜杠 / 而非反斜杠 \
  • 确保 root 指向正确的 ThinkPHP 项目 public 目录
  • 伪静态规则对 ThinkPHP 路由至关重要

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” 错误

  • 检查 Nginx 配置中的 root 路径是否正确
  • 确保 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 配置正确
  • 检查 PHP-FPM 是否正在运行

PHP 扩展缺失

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

权限问题

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

日志检查

  • Nginx 错误日志:C:\nginx\logs\error.log
  • PHP 错误日志:在 php.ini 中配置 error_log 指令

端口冲突

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

Nginx 常用命令

  • 重新加载配置:nginx -s reload
  • 停止服务:nginx -s stop
  • 测试配置文件:nginx -t

设置为 Windows 服务(可选)

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

相关文章:

  • 关于服务器cpu过高的问题排查
  • 软考网络安全工程师条件
  • 探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
  • golang的io
  • NL2SQL-基于Dify+阿里通义千问大模型,实现自然语音自动生产SQL语句
  • C++初阶--基本语法讲解
  • 数据安全_笔记系列11:GDPR(通用数据保护条例)合规框架
  • CDefView::_OnFSNotify函数分析
  • STM32MP157A单片机移植Linux系统使用python链接云服务器
  • Spring统一格式返回
  • Spring学习笔记03——Spring Boot的文件结构
  • XGMII(10 Gigabit Media Independent Interface)详解
  • Mac上安装Pycharm
  • 【音视频】音频基础
  • 前端项目打包生成 JS 文件的核心步骤
  • 飞牛NAS玩转DeepSeek-R1大模型并实现内外网自由互通
  • AI浏览器BrowserUse:本机运行环境准备(二)
  • Linux搭建个人大模型RAG-(ollama+deepseek+anythingLLM)
  • java jar包内的jar包如何打补丁
  • 51单片机编程学习笔记——74HC245八路三态输出双向收发器
  • 深圳龙华做网站的公司/seo页面优化技术
  • 微信公众号网站自己做导航条/seo外包公司哪家专业
  • 性价比最高网站建设电话/关键词挖掘工具免费
  • 单位网站建设管理工作总结/刷百度关键词排名优化
  • 怎么做网站动态框/友情链接的方式如何选择
  • 驻马店市做网站/河南省人民政府