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

devtools/2025/3/4 18:15:53/

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 文件:

nginx">#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

phpini__76">创建 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 文件:

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


http://www.ppmy.cn/devtools/164525.html

相关文章

C# 矩形面积和周长的程序(Program for Area And Perimeter Of Rectangle)

矩形是平面上的平面图形。 它有四条边和四个相等的角,每个角都是 90 度。 矩形的四条边并不像正方形那样长度相等,而是彼此相对的边长度相等。 矩形的两条对角线长度相等。 例子: 输入:4 5 输出:面积 20 …

HttpServletRequest 和 HttpServletResponse 不同JDK版本的引入

java中,可能会用到JWT令牌校验, 这时,大概率会用到 HttpServletRequest,和 HttpServletResponse。 若为 JDK8,SpringBoot 2.7.3 的版本则引入: import javax.servlet.http.HttpServletRequest; import ja…

【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-沙盒缓存 Objective-C语言】

一、沙盒缓存 1.下边我们来看沙盒缓存,但是,我们先要来看一下,为什么要学这个东西,为什么要做这件事情,好,我们先来运行一下我们的程序, 好,图片,先是从网络上下载, 下载完成之后,就保存到了内存中,保存到我们那个图片的缓存池中来,现在,我把程序关掉,我再开,图…

数据挖掘中特征发现与特征提取的数学原理

好的,我将深入研究数据挖掘中特征发现与特征提取的数学原理,涵盖统计学基础、特征工程的数学方法、以及在机器学习和深度学习中的应用。 我会整理相关数学公式和理论,包括主成分分析(PCA)、独立成分分析(I…

【Kubernets】K8S亲和性配置相关说明

K8S亲和性配置相关说明 配置说明**Kubernetes 亲和性配置详细说明** **一、亲和性类型****二、节点亲和性(Node Affinity)****1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution****2. 软策略:preferredDuringScheduling…

如何通过rust实现自己的web登录图片验证码

在进行web系统开发时,为保障系统登录安全,登录页面中的验证码必不可少。在java中,我们可以利用相应的2D图像库快速生成图形验证码,而对于rust,我们没有合适的标准库进行图像验证码的生成。今天,我们通过使用…

nuxt常用组件库html-validator、@nuxtjs/i18n、@nuxt/image、@unocss/nuxt使用解析

html-validator 主要用于自动验证nuxt服务器呈现的HTML(SSR和SSG),以检测可能导致水合错误的HTML常见问题,有助于减少水合错误,检测常见的可访问性错误。 安装 npx nuxilatest module add html-validator配置 若自动更新nuxt.config.ts配置文…

如何使用Spring Boot框架整合Redis:超详细案例教程

目录 # 为什么选择Spring Boot与Redis整合? 1. 更新 pom.xml 2. 配置application.yml 3. 创建 Redis 配置类 4. Redis 操作类 5. 创建控制器 6. 启动应用程序 7. 测试 # 为什么选择Spring Boot与Redis整合? 将Spring Boot与Redis整合可以充分利…