在Debian环境下,ThinkPHP的调试模式需通过配置文件开启。打开项目根目录下的config/app.php(或.env文件),设置app_debug为true(开发环境)。这会显示详细的错误信息(如语法错误、数据库连接失败、未定义变量等),帮助快速定位问题。注意:生产环境务必关闭(设为false),避免敏感信息泄露。
ThinkPHP提供了一系列便捷的调试函数,用于快速输出变量或跟踪代码执行:
dump($variable, true, '标签', true)输出变量内容(true表示返回而非直接输出,标签用于标识,true表示显示类型信息),适用于检查变量值是否符合预期。debug_start('label')和debug_end('label')记录代码段的运行时间及内存占用,帮助优化慢查询或高消耗逻辑。trace('变量名', $variable)将变量信息添加到页面Trace栏,方便跟踪变量在流程中的变化。Xdebug是PHP强大的调试扩展,支持断点调试、变量监视、堆栈跟踪等功能。在Debian上的配置步骤如下:
sudo apt install php-xdebug(根据PHP版本调整,如php8.2-xdebug)。/etc/php/{version}/cli/php.ini(命令行)和/etc/php/{version}/fpm/php.ini(Web服务器),添加以下配置:zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9003
xdebug.remote_autostart=1
xdebug.mode=debug
ThinkPHP的日志系统支持多级别(debug、info、error等)、多通道(文件、数据库、JSON等)记录,是长期追踪问题的关键工具:
config/log.php,为开发环境创建专用通道(如dev_debug),设置更详细的日志级别和路径:'channels' => [
    'dev_debug' => [
        'type' => 'file',
        'path' => runtime_path('log/dev'), // 开发日志单独存放
        'level' => ['debug', 'info', 'error'], // 记录调试及以上级别
        'apart_level' => ['sql'], // SQL日志单独文件
        'max_files' => 7, // 保留7天
    ],
];
Log门面记录信息,如:use think\facade\Log;
Log::debug('用户登录尝试', ['username' => $username]); // 调试信息
Log::error('数据库连接失败', ['error' => $e->getMessage()]); // 错误信息
runtime/log/目录下(如dev_debug.log),可通过tail -f runtime/log/dev_debug.log实时查看最新日志,或使用php think log命令查看所有日志。Debian环境下,ThinkPHP通常搭配Nginx或Apache运行,需确保Web服务器正确转发PHP请求:
/etc/nginx/sites-available/your-site中添加以下配置,确保fastcgi_pass指向PHP-FPM socket(如unix:/run/php/php8.2-fpm.sock):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;
}
mod_php或php-fpm模块已启用,配置ProxyPassMatch或SetHandler转发PHP请求。sudo systemctl restart nginx(或apache2)使配置生效。通过自定义错误处理类,可以统一处理ThinkPHP抛出的异常,增强错误信息的可读性:
app/exception目录下创建CustomHandle.php,实现think\exception\Handle接口:namespace app\exception;
use think\exception\Handle;
use think\Response;
class CustomHandle extends Handle {
    public function render($request, \Exception $e) {
        if ($e instanceof \think\exception\HttpException) {
            // HTTP异常(如404、500)
            return json(['error' => $e->getMessage()], $e->getStatusCode());
        } else {
            // 其他异常(如数据库错误)
            Log::error('自定义异常:'.$e->getMessage(), ['file' => $e->getFile(), 'line' => $e->getLine()]);
            return json(['error' => '服务器内部错误'], 500);
        }
    }
}
config/app.php中设置exception_handle为自定义类的命名空间:'exception_handle' => 'app\exception\CustomHandle',
这样,所有异常都会经过自定义处理,避免直接暴露敏感信息。Debian的终端适合通过命令行快速调试ThinkPHP项目:
php think run启动内置服务器,直接在终端查看输出信息(如错误、日志),无需依赖Web浏览器。php think clear清除缓存(解决缓存导致的配置不生效问题),php think optimize:autoload重新加载自动加载文件(解决类找不到问题)。若项目提供API接口,可使用Postman或curl工具模拟请求,检查接口响应是否符合预期:
curl -X GET http://localhost/api/user/info -H "Authorization: Bearer your_token"