Esse erro é clássico de **estouro de memória no PHP**.
O Artisan está tentando carregar muitos registros do banco de dados em memória de
uma vez (`fetchAll()`), e o limite padrão de memória (`268435456 bytes = 256MB`)
não foi suficiente.
### Possíveis soluções:
#### 1. Aumentar o limite de memória do PHP
Se o comando realmente precisa processar muitos registros de uma vez:
* No `[Link]` (procure `memory_limit`):
```ini
memory_limit = 1024M
```
* Ou apenas para esse comando:
```bash
php -d memory_limit=1024M artisan messages:replace-signature
```
#### 2. Processar os registros em lotes (mais recomendado)
O problema maior é que o código está usando algo que força `fetchAll()` (carregar
tudo na RAM).
Em Laravel, o ideal é usar **chunking** ou **cursor**:
Exemplo:
```php
// chunk: processa 1000 registros por vez
Message::chunk(1000, function ($messages) {
foreach ($messages as $message) {
// lógica aqui
}
});
// cursor: stream de registros (não carrega tudo na memória)
foreach (Message::cursor() as $message) {
// lógica aqui
}
```
Isso evita que o PHP exploda de memória em tabelas grandes.
#### 3. Debug do comando
Olhe dentro do comando `messages:replace-signature`.
Se estiver usando algo como:
```php
$messages = DB::table('messages')->get();
```
Isso carrega **tudo na RAM**.
Troque por `chunk()` ou `cursor()`.
#### 4. Rodar só em datasets menores
Se for para ambiente de homologação/teste, talvez você possa filtrar:
```php
DB::table('messages')->where('id', '<', 10000)->chunk(1000, function ($msgs) {
...
});
```
---
### Resumindo
* Se for só rodar 1x → aumente a memória com `php -d memory_limit=1024M`.
* Se for recorrente → refatore o comando para `chunk()` ou `cursor()`.
Quer que eu abra o código do teu `messages:replace-signature` e te mostre como
refatorar para usar `chunk()` e não dar mais esse erro?