安装DDEV https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/

这是我的项目目录结构

├── backend
│   ├── app
│   ├── config
│   ├── public
│   ├── runtime
│   ├── ...
│   └── vendor
├── frontend

配置DDEV

根据自己项目需要配置php版本、数据库版本、上传目录等。

后面再修改也只需要用ddev config命令执行修改即可。记得执行ddev restart重启服务。


ddev config --docroot=backend/public --project-type=php --composer-root=backend --php-version=8.2 \
  --xdebug-enabled=true --database=mysql:5.7 --upload-dirs=uploads --web-working-dir=/var/www/html/backend

添加redis服务

ddev add-on get ddev/ddev-redis

启动DDEV

ddev start

添加think命令

添加文件.ddev/commands/web/think

#!/usr/bin/env bash

## Description: The ThinkPHP CLI.

./think $@

添加后可用ddev think命令执行think命令

设置ddev环境变量

复制文件.env.env.ddev, 并修改为ddev环境默认数据库配置。如下

# 数据库配置
HOSTNAME = db
HOSTPORT = 3306
USERNAME = db
PASSWORD = db
DATABASE = db

修改入口文件public/index.php,添加ddev环境变量判断,如下:

$env = getenv('RUNTIME_ENVIRONMENT')?:'';
if (getenv('IS_DDEV_PROJECT') == 'true') {
    $env = 'ddev';
}
$response = $app->setEnvName($env)->http->run();
$response->send();
$app->http->end($response);

命令行的think命令修改也类似,用$app->setEnvName($env)设置环境变量。

修改nginx配置

修改nginx配置文件.ddev/nginx_full/nginx-site.conf,修改如下

location / {
        absolute_redirect off;
        # try_files $uri $uri/ /index.php?$query_string;
        if (!-e $request_filename){
           rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
    }

记得删除掉#ddev-generated注释,不然重启会还原。

添加xdebug配置

添加配置文件.ddev/php/sixshop.ini,添加如下配置

[XDEBUG]
xdebug.mode=develop,debug,coverage
xdebug.start_with_request=yes
xdebug.discover_client_host=0
xdebug.client_host=host.docker.internal
xdebug.idekey = vsc
xdebug.client_port="9003"
xdebug.log = "/var/www/html/backend/runtime/xdebug.log"

记得debug时idekey使用xdebug.idekey配置的值, 我配置的是vsc,相同才能在你的IDE中正确识别xdebug。