当前位置: 首页 > 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 服务,实现开机自启动。

相关文章:

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

Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建 目录 安装 Nginx 和 PHP配置 Nginx配置 PHP启动服务ThinkPHP 配置常见问题排查 1. 安装 Nginx 和 PHP 安装 Nginx 访问 Nginx 官网 下载 Windows 版本解压到指定目录,如 C:\nginx 安装 PHP 访问 PHP 官网…...

Redis100道高频面试题

一、Redis基础 Redis是什么?主要应用场景有哪些? Redis 是一个开源的、基于内存的数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合等),可以用作数据库、缓存和消息中间件。 主要应用场景&…...

登录服务器后如何找到对应的drupal所在的文件夹

在服务器上找不到 Drupal 安装目录的原因可能有以下几种: 多站点配置: Drupal 支持多站点设置,即在同一安装中托管多个网站。在这种配置下,每个站点都有自己的设置和文件夹,通常位于 sites 目录下。例如,站…...

win32汇编环境,窗口程序中使控件子类化的示例一

;运行效果 ;win32汇编环境,窗口程序中使编辑框控件子类化的示例一 ;窗口子类化,就是把某种控件,自已再打造一遍,加入自已的功能。比如弄个特殊形状的按钮,或只能输入特殊字符的编辑框 ;当然,一般来说,这都是…...

专业工具,杜绝一切垃圾残留!

在安装大多数软件时均会在系统注册表中创建相应的条目。如果卸载后仍然存在注册表残留,可能会导致再次安装时出现失败,同时也会对系统性能和存储空间产生负面影响。常见的卸载残留包括注册表项、程序文件夹、用户数据文件夹、临时文件以及相关插件等。 …...

java 实现简易基于Dledger 的选举

java 实现简易基于Dledger 的选举 1. 定义 Dledger 节点类,包含节点的状态、日志存储、选举和日志复制逻辑 import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.Executors; import java.util.concurrent.S…...

大数据“调味“ ,智慧“添香“,看永洪科技助力绝味食品数字化新征程

近年来,随着国家数字化政策不断出台、新兴技术不断进步、企业内生需求持续释放,数字化转型逐步成为企业实现高质量发展的必由之路,成为企业实现可持续发展乃至弯道超车的重要途径。 在全国数字化浪潮驱动下,以人工智能、互联网、…...

【嵌入式】MQTT

MQTT 文章目录 MQTT安装简介MQTT客户端代码 安装 安装Paho MQTT C库: sudo apt-get install libpaho-mqtt3-dev头文件包含: #include "MQTTClient.h"编译选项: gcc -o $ $^ -lpaho-mqtt3c简介 MQTT协议全称是(Message Queuing…...

vue原理面试题

以下是一些关于Vue原理的面试题: 一、虚拟DOM与响应式系统 Vue中的虚拟DOM是如何工作的? 答案: 当Vue组件的数据发生变化时,Vue首先会在虚拟DOM中构建一个新的虚拟DOM树来表示更新后的组件结构。然后,Vue会将新的虚拟DOM树与旧的虚拟DOM树进行比较(这个过程称为Diff算法…...

office集成deepseek插件,office集成deepseek教程(附安装包)

文章目录 前言一、下载与安装OfficeAI 助手二、获取 DeepSeek 的 API key三、在 OfficeAI 助手中配置 DeepSeek API key四、使用 OfficeAI 助手功能 前言 本教程将为你详细讲解 Office 集成 DeepSeek 的安装步骤和使用方法,助你轻松拥抱智能办公新时代,…...

行业洞察|安踏、迪桑特、始祖鸟、昂跑、lululemon等运动户外品牌的「营销创新和会员运营」对比解读

商派助力国际知名鞋品牌OMS系统全面升级,拓展业务类型和营销玩法! 一、业务模式创新:打破传统边界,构建多维竞争力 近年来,户外运动品牌在业务模式上的革新呈现三大趋势:DTC模式深化、多品牌矩阵重构、技术…...

小鹏汽车申请注册“P7 Ultra”商标 或为P7车型升级版铺路

大湾区经济网品牌工程频道报道,据企查查APP显示,广东小鹏汽车科技有限公司近日提交“P7 Ultra”商标注册申请,国际分类为运输工具,当前状态为“注册申请中”。业内推测,此举或为小鹏P7车型高端版本量产上市做准备。 作…...

数列极限入门习题

数列极限入门习题 lim ⁡ n → ∞ ( 1 1 2 1 3 ⋯ 1 n ) 1 n \lim\limits_{n\rightarrow\infty}(1 \frac{1}{2}\frac{1}{3}\cdots\frac{1}{n})^{\frac{1}{n}} n→∞lim​(121​31​⋯n1​)n1​ lim ⁡ n → ∞ ( 1 n 1 1 n 2 ⋯ 1 n n ) \lim\limits_{n\rightarrow\…...

ubuntu部署gitlab-ce及数据迁移

ubuntu部署gitlab-ce及数据迁移 进行前梳理: 在esxi7.0 Update 3 基础上使用 ubuntu22.04.5-server系统对 gitlab-ce 16.10进行部署,以及将gitlab-ee 16.9 数据进行迁移到gitlab-ce 16.10 进行后总结: 起初安装了极狐17.8.3-jh 版本(不支持全局中文,就没用了) …...

批量设置 Word 样式,如字体信息、段落距离、行距、页边距等信息

在 Word 文档中,我们可以做各种样式的处理。比如设置 Word 文档的字体样式、设置 Word 文档的段落样式以及设置 Word 文档的页面样式。我们通常可以在 Office 中完成这些操作,相信绝大部分场景我们也是这样完成的。但是如果我们手上有 1000 个 Word 文档…...

【论文分析】语义驱动+迁移强化学习:无人机自主视觉导航的高效解决方案(语义驱动的无人机自主视觉导航)

论文阅读:《Semantic-Driven Autonomous Visual Navigation for Unmanned Aerial Vehicles》语义驱动的无人机自主视觉导航 1. 引言 这篇论文《Semantic-Driven Autonomous Visual Navigation for Unmanned Aerial Vehicles》发表在《IEEE Transactions on Indust…...

JDK官网安装教程 Windows

文章目录 概要整体架构流程 概要 JDK 是 Java 开发的基础,无论是开发桌面应用、Web 应用、移动应用,还是大数据、云计算相关项目,都需要先安装 JDK 整体架构流程 第一步,进入官网 Java Downloads | Oracle 中国 ①可以直接复…...

MR30系列分布式I/O:高稳定与高精准赋能锂电池覆膜工艺革新

在新能源行业高速发展的背景下,锂电池生产工艺对自动化控制的精准性和可靠性提出了更高要求。作为锂电池生产中的关键环节,覆膜工艺直接关系到电池的绝缘性能、安全性及使用寿命。面对复杂的工艺控制需求,明达技术MR30系列分布式I/O模块凭借其…...

android 横竖屏适配工作总结

1、创建一个横屏文件夹,复制一份竖屏的布局。然后修改适配横屏。只要布局id都有,其他想怎么改就怎么修改。 2、最好使用kotlin语言编写和使用viewBinding绑定控件,可以使用?.判空控件是否存在,不至于缺少这个控件时候直接崩溃。 …...

离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用

离散傅里叶变换(DFT)及其在图像处理中的应用 什么是离散傅里叶变换? 离散傅里叶变换(Discrete Fourier Transform, DFT)是一种强大的数学工具,用于将离散信号从时域(或空间域)转换…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...