rsync是单向增量同步最稳方案,需加--delete清理旧文件、排除敏感配置、用-avz参数,首次同步先--dry-run验证,并同步后清OPcache和Composer autoload。

用 rsync 做单向增量同步最稳
本地开发环境和线上代码不一致,90% 的问题出在手动复制漏文件、覆盖错配置、忽略 .gitignore 规则。rsync 是唯一能兼顾速度、可控性和安全性的方案,比 scp -r 或拖拽更可靠。
- 必须加
--delete才能清理线上已删但本地残留的旧文件(否则越积越多) - 务必排除敏感文件:
--exclude='wp-config.php' --exclude='.env' --exclude='storage/logs/' - 用
-avz参数:保留权限/时间戳(-a)、显示过程(-v)、压缩传输(-z) - 首次同步建议加
--dry-run先看会删什么、传什么,避免误操作
rsync -avz --delete \ --exclude='.git/' \ --exclude='.env' \ --exclude='storage/logs/' \ --exclude='vendor/' \ ./user@prod-server:/var/www/myapp/
PHP 本地环境不能直接复用线上 .env 文件
数据库密码、API 密钥、缓存主机这些一旦同步过去,本地就可能连上生产库或触发真实支付回调。不是“同步代码”,而是“同步结构 + 隔离配置”。
- 线上
.env永远不进 Git,本地也绝不覆盖它 - 用
.env.example统一字段名和注释,开发者复制后手动填本地值 - Laravel / Symfony 等框架读取
.env时,可加判断跳过危险值:$_ENV['DB_HOST'] !== 'localhost' ?: die('Refuse prod config'); - CI/CD 流水线里用变量注入,而不是文件同步
Git hook 自动过滤不兼容的本地调试代码
你加的 dd()、var_dump()、exit; 或临时绕过登录的 Auth::loginUsingId(1),很容易被忘掉并推到线上。
1、请上传下载到的淘宝客系统安装包并上传到空间根目录中进行解压,解压后将网站文件移动到根目录的位置,然后访问 /install 进行安装。您也可以在本地解压,并以二进制方式将程序上传至您的网站空间。 2、同意启科网络电子商务系统安装协议进入下一步。 3、如果系统检测环境通过,则会提示输入您的数据库服务器地址(一般为本机,即127.0.0.1或者localhost)、数据库账号、数据库密码、数据库名
- 在
.git/hooks/pre-commit里加检查:git diff --cached | grep -q "dd(" && echo "ERROR: dd() found" >&2 && exit 1 - 用
php -l扫描语法错误,避免带parse error的文件被同步 - 对 WordPress 插件或主题,可在
functions.php开头加:if ( defined('WP_DEBUG') && WP_DEBUG ) { error_log('Local debug mode'); },上线时自动失效
同步后清空 OPcache 和 Composer autoload
PHP 7.4+ 默认启用 OPcache,改完代码不重启 PHP-FPM 或不重置缓存,线上看到的还是旧逻辑。Composer 的 autoload_classmap.php 同样不会自动更新。
立即学习“PHP免费学习笔记(深入)”;
- 同步完成后立刻执行:
sudo systemctl reload php8.1-fpm(根据实际版本调整) - 或只清 OPcache:
curl -X GET http://localhost/clear-opcache.php(该脚本需含opcache_reset()且限制内网访问) - 运行
composer dump-autoload --optimize,尤其当新增了类或修改了命名空间 - WordPress 用户注意:
wp cache flush不等于 OPcache 清理,两者都要做
/ 导致 include 错目录?”










