Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建
目录
- 安装 Nginx 和 PHP
- 配置 Nginx
- 配置 PHP
- 启动服务
- ThinkPHP 配置
- 常见问题排查
1. 安装 Nginx 和 PHP
安装 Nginx
- 访问 Nginx 官网 下载 Windows 版本
- 解压到指定目录,如
C:\nginx
安装 PHP
- 访问 PHP 官网 下载 PHP(推荐 PHP 7.4 或更高版本)
- 选择 Non Thread Safe (NTS) x64 版本
- 解压到指定目录,如
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 文件
- 复制 PHP 目录中的
php.ini-development
为php.ini
- 编辑
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
- 在 PHP 目录中找到
php-fpm.conf.default
,复制为php-fpm.conf
- 编辑
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 服务,实现开机自启动。