上线前必须剥离开发配置:将environment设为production,禁用错误显示与日志记录;数据库凭据改用环境变量,加密密钥须32位随机且环境隔离;启用页面缓存、cdn、gzip及静态缓存头;writable目录设755权限并指向绝对路径。

上线前必须把开发环境配置彻底剥离,生产环境要关闭调试、屏蔽错误、启用缓存,并确保敏感信息不暴露。
关闭调试与错误显示
在 index.php 中强制设为生产环境,并禁用错误报告:
- 将
define('ENVIRONMENT', 'development');改为define('ENVIRONMENT', 'production'); - 确认 app/Config/Boot/production.php 已启用,它会自动设置
error_reporting(0)和ini_set('display_errors', '0') - 检查 app/Config/Logger.php,确保
$logThreshold = 0(即不记录日志)或仅记录 ERROR 级别
数据库与密钥安全加固
避免硬编码凭据,改用环境变量或独立配置:
- 删除 app/Config/Database.php 中明文的数据库账号密码,改用
$_ENV或getenv()读取(如'username' => $_ENV['DB_USER'] ?? 'root') - 在服务器上通过 Apache 的
SetEnv或 Nginx 的fastcgi_param注入环境变量,不写入代码库 - 替换 app/Config/Encryption.php 中的
$key,使用 32 字符以上随机字符串,且不同环境必须不同
静态资源与性能优化
减少请求开销,提升首屏加载速度:
- 启用 app/Config/Cache.php 中的页面缓存(
$pageCache = true),并设置合理过期时间 - 将 CSS/JS 合并压缩,部署到 CDN;确保 public 目录为 Web 根目录,禁止访问 app 和 writable
- 在 .htaccess(Apache)或 Nginx 配置中开启 Gzip 压缩和静态文件缓存头(如
Cache-Control: public, max-age=31536000)
权限与可写目录控制
限制运行时目录权限,防止意外写入或执行:
-
writable 目录需设为 Web 服务器用户可写(如
www-data:www-data),但不可执行(chmod 755 writable,子目录755,文件644) - 确认 app/Config/Paths.php 中
$writableDirectory指向绝对路径,避免相对路径引发权限混乱 - 上线后手动清空 writable/cache 和 writable/logs,避免残留开发期缓存或日志











