Ubuntu 22.04/24.04 搭建 ThinkPHP 集成开发环境
一 环境准备与安装
- 更新系统并安装基础组件(以 PHP 8.2 为例,ThinkPHP 6.x 推荐 PHP 7.4+):
- 安装 PHP 与常用扩展:
- sudo apt update && sudo apt install -y php php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-bcmath
- 安装 Nginx 与 MySQL/MariaDB:
- sudo apt install -y nginx mysql-server
- 安装 Composer(PHP 依赖管理):
- curl -sS https://getcomposer.org/installer | php
- sudo mv composer.phar /usr/local/bin/composer
- 验证安装结果:
- php -v(应显示 8.2.x 或更高)
- composer --version
- sudo systemctl status nginx(应为 active (running))
- sudo systemctl status mysql(应为 active (running))
- 可选:开启防火墙放行 80/443 端口(如使用 ufw:sudo ufw allow ‘Nginx Full’)。
二 创建 ThinkPHP 项目
- 进入站点目录并创建项目(以 tp6 为例):
- cd /var/www/html
- composer create-project topthink tp6
- 建议目录权限(Web 服务器用户为 www-data):
- sudo chown -R www-data:www-data /var/www/html/tp6
- sudo chmod -R 755 /var/www/html/tp6/runtime
- 开发阶段可使用内置服务器快速验证:
- cd /var/www/html/tp6
- php think run(默认监听 http://127.0.0.1:8000)。
三 配置 Nginx 与 URL 重写
- 创建站点配置(避免直接改动默认配置):
- sudo nano /etc/nginx/sites-available/tp6.conf
- 写入以下配置(注意将 root 指向项目的 public 目录,且按实际 PHP 版本调整 fastcgi_pass 的 socket 路径,如 php8.2-fpm.sock 或 php7.4-fpm.sock):
- server {
listen 80;
server_name your_domain_or_ip;
root /var/www/html/tp6/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
- 启用站点并重启服务:
- sudo ln -s /etc/nginx/sites-available/tp6.conf /etc/nginx/sites-enabled/
- sudo nginx -t && sudo systemctl restart nginx
- 说明:
- root 必须指向 public,这是 ThinkPHP 的安全与入口要求。
- try_files 规则是 PATHINFO 路由生效的关键。
四 数据库与项目配置
- 创建数据库与用户(示例):
- sudo mysql
- CREATE DATABASE tp6_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘tp6_user’@‘localhost’ IDENTIFIED BY ‘YourStrongPassword’;
- GRANT ALL PRIVILEGES ON tp6_db.* TO ‘tp6_user’@‘localhost’;
- FLUSH PRIVILEGES;
- EXIT;
- 配置项目连接信息(使用 .env 文件优先):
- 编辑 /var/www/html/tp6/.env(如不存在可复制 .env.example):
- DB_TYPE=mysql
- DB_HOST=127.0.0.1
- DB_NAME=tp6_db
- DB_USER=tp6_user
- DB_PASSWORD=YourStrongPassword
- DB_PORT=3306
- 开发阶段可开启调试(生产务必关闭):
- 编辑 config/app.php:‘app_debug’ => true(生产改为 false)。
五 验证与常见问题排查
- 访问测试:
- 浏览器打开 http://your_domain_or_ip,出现 ThinkPHP 欢迎页即成功。
- 常见问题:
- 502 Bad Gateway:
- 检查 PHP-FPM 是否运行:sudo systemctl status php8.2-fpm
- 核对 Nginx 中 fastcgi_pass 的 socket 路径与 PHP-FPM 实际监听一致(如 /run/php/php8.2-fpm.sock)。
- 路由 404 或白屏:
- 确认 Nginx 配置包含:try_files $uri $uri/ /index.php?$query_string;
- 确认 root 指向 public 目录。
- 权限错误(日志/缓存不可写):
- 确保 runtime 目录可写:sudo chown -R www-data:www-data /var/www/html/tp6/runtime && sudo chmod -R 755 /var/www/html/tp6/runtime。
- Composer 安装慢:
- 使用国内镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。