--- name: Deploy procedimento seguro description: Como enviar arquivos PHP ao servidor sem causar ParseError ou cache stale type: reference originSessionId: 2b74afa8-ad08-407b-80cf-49ce17097f66 --- # Deploy — procedimento seguro ## Regras absolutas 1. **CRLF → LF** antes de enviar: ```bash tr -d '\r' < arquivo.php > /tmp/arquivo_lf.php ``` 2. **Deploy atomico** (nunca sobrescrever direto o arquivo real): ```bash # Upload como .tmp pscp -pw -batch /tmp/arquivo_lf.php root@server:/path/arquivo.php.tmp # Validar sintaxe plink ... "php -l /path/arquivo.php.tmp" # Mover atomicamente plink ... "mv /path/arquivo.php.tmp /path/arquivo.php && chown gotechbr:gotechbr /path/arquivo.php" ``` 3. **OPcache stale**: servidor tem `validate_timestamps = 0`. Apos deploy, SEMPRE: ```bash plink ... "pkill php-cgi" ``` ## Por que nao enviar direto Upload SCP grava o arquivo em chunks. Durante a transferencia, PHP-FPM pode ler um arquivo parcial → ParseError em produção. O `.tmp + mv` garante atomicidade. ## Casos especificos - **`Routes.php`**: DEVE ser LF puro (verificar com `file Routes.php` → "UTF-8 Unicode text", SEM "with CRLF line terminators"). ## `.htaccess` Bloqueia acesso direto a `*.php` (exceto `index.php`). Toda chamada passa pelo CI4 router — usar rotas, nunca URLs diretas a controllers.