Confira o servidor antes de a loja abrir
O SixPreflight é um verificador de prontidão de servidor para o 6amMart. Envie uma pasta, abra no navegador, e até 163 verificações terminam em uma frase: pronto para abrir, ou não pronto — e exatamente o que corrigir primeiro.
Sempre a versão atual, e ele roda no seu próprio servidor. Ele lê: nunca lê nem escreve em uma tabela da aplicação, e nunca envia e-mail ou SMS a ninguém. Três superfícies podem agir fora da pasta da própria ferramenta, e uma quarta escreve dentro dela — cada uma só quando você aperta o botão dela. Veja “O que ele vai mudar, se você pedir”.
163
verificações distintas no código
10
etapas, das mais baratas e mais prováveis de estarem quebradas para as demais
1
frase no fim de tudo
A–F
nota, com cada bloqueador nomeado
Está lendo isto com um assistente de IA?
Obter o SixPreflight
O SixPreflight é uma pasta de PHP que você envia. Nada para instalar antes, e nada para registar. É gratuito.
Experimente antes de descarregar
Palavra-passe da demonstração
Password: a3uap648vnh7yqenc9vb
No username — SixPreflight asks for the password only.
The shop runs a real dataset — tens of thousands of orders — so the screens behave the way they will on yours, not the way a demo with forty products does. Two things are switched off on the demo: maps and SMS one-time passwords. Both use keys locked to a single server, which is how they should be held, so they cannot answer from a demo host. They work normally on your own install.
Obter o SixPreflight
Free- Atualizações incluídas — cada versão chega ao CodeCanyon sem custo adicional. Sem servidor de licenças, sem chave para renovar.
- A primeira configuração é gratuita — envie o seu código de compra e os dados do servidor por WhatsApp ou e-mail.
Nada para ativar — corre no seu próprio servidor, não comunica para fora, e continua a funcionar mesmo que este site esteja em baixo.
O que ele faz
Para um dono de loja, não para um engenheiro
Você comprou o 6amMart, alugou um servidor e alguém o instalou. O site carrega. Isso não é o mesmo que estar pronto. Uma loja pode parecer completamente normal no navegador enquanto o gateway de pagamento dela não tem credenciais que funcionem, as notificações push não chegam a lugar nenhum, o arquivo .env pode ser lido por qualquer um na internet, as tarefas agendadas nunca rodaram uma vez, e o banco de dados está configurado para usar uma fração da memória que você está pagando. Nada disso aparece até um cliente real fazer um pedido real e algo dar errado em silêncio.
O SixPreflight é a verificação que você roda antes de isso acontecer. Você envia uma pasta para dentro do seu site, abre no navegador, define uma senha e aperta um botão. Ele olha para o servidor como um engenheiro cuidadoso olharia — o hardware, o PHP, as configurações do banco de dados, o servidor web, as permissões de arquivo, o que a internet consegue alcançar, e se pagamentos, e-mail, SMS, mapas e notificações push realmente funcionam quando você os chama de verdade.
Depois ele te dá uma frase — “Pronto para abrir” ou “Não está pronto para receber pedidos” — uma nota em letra e uma lista ordenada do que corrigir, cada item com a linha exata a mudar, o arquivo em que ela está e o que custa à sua loja deixar isso como está.
A varredura em si só lê. Onde a ferramenta pode agir, ela age em um botão que você aperta, nunca por conta própria.
Com isto versus sem isto
O que você sabe antes de abrir
O mesmo servidor nos dois lados. A diferença é se você encontra os problemas, ou se um cliente pagante encontra.
O dia em que você abre
Sem o SixPreflight
O site carrega no navegador, então você abre. Uma loja pode parecer completamente normal enquanto seu gateway de pagamento não tem credenciais que funcionem, suas notificações push não chegam a lugar nenhum, seu .env é legível por qualquer pessoa na internet, suas tarefas agendadas nunca rodaram uma única vez e seu banco de dados está configurado para usar uma fração da memória que você está pagando.
Com o SixPreflight
Até 163 verificações terminam em uma frase — pronta para abrir, ou não pronta para receber pedidos — com uma nota de A a F e uma lista ordenada do que corrigir primeiro.
Como você descobre que algo está errado
Sem o SixPreflight
Um cliente real faz um pedido real e algo dá errado silenciosamente. Esse é o seu primeiro sinal, e ele custa o pedido e o cliente.
Com o SixPreflight
Você descobre antes de abrir, com uma varredura que você mesmo roda — cada item nomeando a linha exata a mudar, o arquivo onde ela está e o que custa à sua loja deixar aquilo como está.
Uma credencial presente mas errada
Sem o SixPreflight
Ela é idêntica a uma que funciona. Um arquivo de configuração com um valor diz que o valor está lá, não que ele está correto.
Com o SixPreflight
Chamadas reais resolvem isso: um token Firebase real gerado e enviado ao endpoint do Google, uma conversa SMTP real com EHLO / STARTTLS / AUTH e uma chamada de geocodificação ao vivo no Google Maps. Presente-mas-errado falha aqui — o único lugar onde pode ser pego antes de um cliente encontrar.
O que a internet já alcança
Sem o SixPreflight
Você presume que os arquivos que não deveriam ser públicos não são públicos. Nada no servidor diz o contrário, porque nada está fazendo as requisições.
Com o SixPreflight
Ele busca uma lista fixa de endereços conhecidamente arriscados no seu próprio site ao vivo — /.env, /.git/config, /artisan, o database.sql do instalador e os próprios arquivos da ferramenta — e relata o que realmente voltou.
O que custa
Sem o SixPreflight
Descobrir isso por um cliente é a versão cara.
Com o SixPreflight
Nada. O SixPreflight é gratuito no CodeCanyon e a primeira configuração é gratuita. Nada no pacote verifica licença, conta ou data de validade, e nada nele reporta qualquer coisa de volta para a AllsWeb.
Executado em servidores reais
A pontuação que obteve quando o apontámos às nossas próprias máquinas
Um verificador que nunca publicou um resultado é apenas uma afirmação. Estes vêm da mesma ronda de medições do benchmark do SixPanel — a ferramenta instalada em servidores reais com uma loja real, e pontuada como um navegador a pontua, não a partir de um terminal.
SixPanel
97 · A
Linhas que exigem atenção: Nenhuma
SixPanel Docker
96 · A
Linhas que exigem atenção: Nenhuma
Como ler corretamente uma pontuação com teto
A pontuação fica limitada a 88 enquanto houver uma única linha a vermelho, por melhor que esteja tudo o resto. É deliberado — uma loja que não consegue vender não devia ler-se como um bom aluno — mas significa que um número com teto quase nada diz sobre os outros noventa e nove controlos. Antes, na mesma ronda, um servidor marcou 88 e outro 96, e a diferença entre as suas pontuações subjacentes era de 0,03 em cerca de cem controlos. Toda a diferença visível era um trabalho em segundo plano desatualizado. Leia sempre as linhas vermelhas, nunca só o título.
Um defeito que esta ronda encontrou na própria ferramenta
O executor de análises do SixPreflight não tinha qualquer tratamento de erros. Num servidor onde a empresa de alojamento desativou uma função de PHP, chamá-la em PHP 8 não é um aviso que se possa silenciar — é um erro fatal — e por isso uma única função desativada terminava toda a análise com um rasto de chamadas em vez de um relatório. E esse é precisamente o alojamento partilhado de cPanel e Plesk que mais precisa desta ferramenta. Está corrigido: uma função desativada é agora uma linha que diz que não pôde ser medida, e a análise chega ao fim.
E um ponto em que erra num servidor endurecido
Num servidor onde o PHP está fechado numa sandbox do kernel, o SixPreflight não consegue ler a configuração do servidor web — e comunica um tempo-limite como não definido quando o servidor web o definiu de facto. Ausência de prova lida como prova de ausência, o que penaliza um servidor por estar endurecido. Está aqui porque uma ferramenta que declara os seus próprios pontos cegos vale mais do que uma que não tem nenhum.
Como funciona
Em etapas, não uma espera longa
A página em si não roda verificação nenhuma. Ela desenha uma casca vazia, e então o navegador pede ao servidor uma etapa de cada vez.
A primeira renderização é instantânea
Medido na instalação de teste: 6.8 KB em 2 ms, contra 36 KB e cerca de 1.6 s quando a página fazia todo o trabalho antes de renderizar. Em um servidor que, por definição, pode estar mal configurado, esperar a verificação mais lenta antes de mostrar qualquer coisa é a troca errada.
A barra de progresso é real
Etapas concluídas sobre o total de etapas, não uma animação. Quando ela para, algo está realmente travado, e o rótulo diz qual verificação.
Uma verificação travada não pode derrubar a página
Cada etapa é uma requisição curta própria, então nada esbarra no max_execution_time. Uma etapa que dá erro é reportada como um achado e a varredura segue. Cada etapa concluída é escrita em disco assim que termina, então uma varredura interrompida ainda é legível.
Dois botões
Verificar agora
Lê a configuração local e descobre o IP público do servidor — cerca de um segundo.
Verificação profunda
Acrescenta as duas etapas que fazem chamadas externas de verdade: os testes de exposição pública contra a sua própria URL e os testes de integração ao vivo.
Detalhe honesto: “Verificar agora” não é totalmente offline. A linha do IP público consulta um serviço externo de eco — ifconfig.me, depois api.ipify.org, depois icanhazip.com, tentados nessa ordem e guardados em cache entre varreduras, com três provedores de propósito, para que um minuto ruim não sobrescreva uma resposta boa conhecida.
As três formas como ele roda
O SixPreflight descobre para o que está olhando e muda o que diz, porque um conselho honesto é diferente em cada caso.
Em um servidor vazio — sem aplicação instalada ainda
Este é o modo para escolher um servidor ou preparar um novo. Hardware, PHP, o servidor de banco de dados, o servidor web, permissões e exposição pública continuam todos sendo verificados. A etapa do .env não devolve nada, a etapa da aplicação devolve apenas a linha de perfil, e a etapa do banco de dados reporta “não verificado — não há aplicação aqui para guardar credenciais” como aprovado, em vez de deixar uma conexão ausente virar a pior linha em uma máquina que está corretamente vazia.
Você ainda pode auditar o banco de dados de uma máquina vazia apontando env_path para um .env de exemplo que carregue as credenciais.
Dentro da sua loja — no código do admin do 6amMart
Envie a pasta para dentro de public/, o diretório que o seu servidor web realmente serve. A raiz da aplicação é encontrada subindo a partir da pasta da própria ferramenta, no máximo cinco níveis, até o diretório que contém o artisan — então tanto public/preflight/ quanto uma pasta na raiz da aplicação funcionam, e um envio enterrado mais fundo que cinco níveis cai em silêncio no modo autônomo. O lugar certo é public/ — uma pasta na raiz da aplicação só é alcançável por URL quando a raiz do site está errada, o que é justamente a coisa mais séria que esta ferramenta procura.
Aqui todas as verificações rodam, inclusive as escritas especificamente a partir do código do 6amMart: o agendador que paga lojas e entregadores, módulos marcados como ativos mas ausentes, as extensões exatas de PHP que os pacotes do fornecedor exigem, e a camada de websocket por trás do rastreamento de entrega ao vivo. Em qualquer outra aplicação Laravel, tudo sobre o servidor continua se aplicando exatamente como está escrito, e as verificações específicas do 6amMart são puladas em vez de adivinhadas.
Embutido no SixPanel
Em um servidor com SixPanel, o painel é dono do servidor web, do PHP, da configuração do banco de dados, do cron, do worker de fila e do certificado, e reescreve esses arquivos a partir dos seus próprios modelos a cada deploy — então um valor colado à mão se perde em silêncio no deploy seguinte. Nesse modo o SixPreflight remove os blocos para colar, os blocos brutos de nginx e Apache, as linhas de reinício do php-fpm e os caminhos de “onde clicar no seu painel de hospedagem”, e aponta para a página do SixPanel dona de cada configuração. Ele mantém tudo que é da aplicação — .env, configurações de negócio, chaves ausentes ou erradas, uma APP_URL errada, storage quebrado, erros no log — porque essa é a metade que o painel não consegue resolver sozinho. Ele diz em que modo está, em uma linha no topo da página, para que o modo nunca seja um mistério.
O modo é decidido por uma variável de ambiente definida pelo bloco de servidor que responde ao caminho (SIXPANEL_EMBED=1), ou por 'embedded' => true no config.php. Um cabeçalho de requisição de propósito não é o sinal principal: um cabeçalho é escrito por quem faz a requisição, então ele sobreviveria ao frame do painel e a mais nada — abra a mesma página em uma aba nova e a ferramenta voltaria a dar conselhos de modo autônomo no mesmo servidor. O X-SixPanel-Embed: 1 só é aceito quando você liga o 'trust_embed_header', que vem desligado, porque sem essa trava qualquer visitante poderia se dar a visão de servidor gerenciado em um servidor que, na verdade, é dele para consertar.
O que ele verifica
163 verificações distintas, em dez etapas
163 verificações distintas vivem no código, rodam em dez etapas, ordenadas das mais baratas e mais prováveis de estarem quebradas para as demais. As duas etapas que fazem chamadas externas são marcadas como lentas e só rodam em uma Verificação profunda.
| Etapa | O que ela olha | Verificações | Exemplos reais |
|---|---|---|---|
| Sistema e hardware | A máquina que você está pagando | 7 | contagem de vCPU, RAM, swap, disco livre, carga média, versão do sistema operacional, se existe alguma ferramenta de backup |
| Ambiente de execução do PHP | A linguagem em que a loja roda | 18 | faixa de versão do PHP, 25 extensões obrigatórias, memory_limit, max_execution_time efetivo, display_errors, OPcache ligado/desligado, memória e contagem de arquivos do OPcache, taxa de acerto |
| Saúde da aplicação | O Laravel e o próprio 6amMart | 22 | .env versionado no git, migrações pendentes, tarefas com falha, fila acumulada, tamanho do log, contagem de erros no log, se o agendador já rodou alguma vez, lista de módulos válida, proxies confiáveis, configurações de instalação presentes |
| Ambiente (.env) | O único arquivo que todo mundo lê | 14 | chaves duplicadas (a última vence, então a sua edição não faz nada), caracteres \r invisíveis, uma APP_KEY inválida ou de fábrica, APP_DEBUG=true, uma APP_URL malformada, chaves que ninguém lê, chaves que ficam nulas quando a configuração é cacheada |
| Identidade do host e permissões | Quem é dono dos arquivos | 9 | IPv4 e IPv6 públicos, o usuário do PHP, propriedade dos arquivos, os seis diretórios que precisam ter permissão de escrita, arquivos com escrita para todos, um .env legível por todos, qualquer coisa com escrita e execução dentro de public/ |
| Servidor web | nginx ou Apache na frente | 17 | tipo de handler, gzip, tokens de servidor, tempo limite de leitura do FastCGI, módulos e MPM do Apache, contagem de workers do php-fpm contra a memória, a cadeia de tamanho de upload, compressão ao vivo, cache de estáticos, HSTS, validade do certificado |
| Cache, fila e tempo real | Trabalho em segundo plano | 11 | conexão de fila, se um worker de fila está realmente rodando e supervisionado, drivers de sessão e de cache, Redis, Memcached, credenciais e esquema do Reverb, credenciais do Pusher |
| Configuração do banco de dados | Onde o dinheiro vive | 32 | buffer pool do InnoDB dimensionado contra os seus dados reais e a sua RAM, redo log, método de flush, max_connections contra os workers do php-fpm, skip_name_resolve, sql_mode, charset, diferença de relógio entre PHP e banco de dados, taxa de acerto do buffer pool, tabelas temporárias em disco, privilégios do usuário do banco |
| Exposição públicalenta | O que um estranho consegue baixar | 12 | HTTPS, .env legível pela web, .git/config legível, laravel.log servido, um arquivo .php enviado sendo realmente executado, Debugbar ou Telescope respondendo, dumps de banco de dados do instalador deixados no lugar, os arquivos desta própria ferramenta servidos como texto |
| Pagamentos, e-mail e SMSlenta | Os serviços que precisam funcionar | 21 | uma conversa SMTP de verdade, a emissão de um token real do Firebase, uma chamada real de geocodificação ao Google Maps, formas de pagamento utilizáveis, credenciais do gateway de SMS, disco de armazenamento com escrita, modo de manutenção, reCAPTCHA, fuso horário, moeda |
A coluna soma 163. Duas linhas trazem uma ressalva.
- Uma das 32 verificações de banco de dados — db_standalone — existe apenas para o caso em que não há aplicação para guardar credenciais. Ela substitui as outras 31, em vez de se juntar a elas.
- Duas das 21 verificações de pagamentos/e-mail/SMS são bases de prefixo (sms_, social_) que se expandem em tempo de execução em uma linha por gateway ativo ou por login social configurado. Então essa etapa pode emitir mais de 21 linhas em uma loja movimentada, ou menos em uma loja vazia.
Nenhuma execução isolada faz as 163 — e aqui está exatamente por quê
Uma loja instalada pode produzir no máximo 162 linhas distintas — e nenhuma execução isolada emite as 162
A db_standalone só é emitida quando não há aplicação, então uma loja instalada nunca pode vê-la; essa é a 163ª. As 162 são um teto, não uma execução.
Uma Verificação profunda em uma loja instalada emite 160
Quando a etapa profunda vai vir a seguir, a classe do servidor web suprime as duas irmãs que apenas leem configuração — gzip e server_tokens do nginx, ou keepalive e server_tokens do Apache — porque a medição ao vivo responde à mesma pergunta a partir de uma resposta real, e as duas podem discordar (gzip ligado, com uma lista gzip_types que omite application/json, é aprovado pela configuração e um aviso pela medição, sobre uma mesma configuração). Essas irmãs estão dentro das 162; elas são o motivo de uma Verificação profunda chegar a 160 e não a 162, e não um par extra por cima.
Um “Verificar agora” emite 123 — ele pula 39
Essas 39 são as 12 verificações de exposição pública, as 21 de pagamentos/e-mail/SMS e as seis linhas de servidor web que só podem ser lidas de uma resposta ao vivo — compression, static_cache, keepalive_live, server_banner, hsts e cert_expiry. As duas irmãs de leitura de configuração estão presentes nesta execução, porque a medição ao vivo que as substituiria não vai acontecer.
Os dois números contam chaves distintas, e um servidor real fica ainda mais baixo — use a ponta de baixo
Três das 17 chaves de servidor web pertencem ao servidor web que você não está rodando (o nginx contribui com client_max_body_size, gzip e fastcgi_read_timeout; o Apache contribui com apache_modules, apache_mpm e keepalive), e a etapa de banco de dados carrega pares condicionais ao motor — o MySQL 8.0.30+ reporta innodb_redo_log_capacity, todo o resto reporta innodb_log_file_size, nunca os dois. Contando só a divisão do servidor web, uma Verificação profunda em uma instalação nginx ou Apache emite no máximo 157, e um “Verificar agora” no máximo 120; cada linha de banco de dados condicional ao motor baixa isso ainda mais.
Em um servidor vazio, 40 linhas não têm nada para ler
As 14 verificações de .env, as 12 verificações da aplicação Laravel, as 9 verificações de plataforma do 6amMart e as 5 verificações de tempo real não têm nada para ler — 40 linhas, deixando apenas a linha de perfil da etapa da aplicação.
Então a forma honesta é “até 163” — com uma Verificação profunda em uma instalação 6amMart rodando o conjunto completo disponível a ela, que são 160 chaves distintas e no máximo 157 linhas em uma máquina real com um único servidor web.
Nenhuma das duas etapas lentas é achismo
A etapa de exposição baixa endereços reais do seu site real
Ela baixa uma lista fixa de endereços sabidamente arriscados do seu próprio site no ar — /.env, /.git/config, /storage/logs/laravel.log, /artisan, /composer.json, /vendor/autoload.php, o database.sql e o public.zip do instalador, /telescope, /_debugbar/open, a rota de cadastro de loja e os arquivos desta própria ferramenta — e reporta o que realmente voltou.
A etapa de serviços faz chamadas de verdade
Ela gera um JWT real e o envia ao endpoint de token do Google para provar que a sua conta de serviço do Firebase funciona, abre uma conversa SMTP de verdade com EHLO / STARTTLS / AUTH, e faz uma chamada de geocodificação ao vivo ao Google Maps. Uma credencial que existe mas está errada falha aqui, que é o único lugar onde isso pode ser pego antes de um cliente encontrar.
A sondagem SMTP para na autenticação. Ela envia EHLO, negocia STARTTLS, autentica e depois envia QUIT — não há MAIL FROM, nem RCPT TO, nem DATA nessa classe, então nada é entregue a ninguém.
Mais duas páginas que não fazem parte das 163
As duas são superfícies reais do produto e nenhuma delas conta para a pontuação.
Rastreamento de entrega ao vivo — 15 verificações
Uma página própria, cobrindo o processo do Reverb, o gerenciador de processos, o socket de escuta, firewall, proxy, certificado, credenciais, chaves da aplicação, configurações da aplicação, autenticação de canal, destino do cliente, cache de configuração, fila, CDN e driver. Para um comprador do 6amMart este é o recurso por trás do mapa ao vivo, e ele é verificado à parte, em vez de ser somado à pontuação do servidor.
Alerta de pedido de teste
Envia uma notificação push de verdade para um dispositivo real de loja ou de entregador, pelo próprio comando artisan da plataforma, e não por um payload montado à mão. Existe um botão “Mostrar o que seria enviado” que roda em simulação, mas o botão padrão envia de verdade.
Como ele pontua
Um número — e ele te diz o que não conseguiu medir
Cada verificação termina como uma de quatro coisas: aprovado, aviso, problema ou não medido.
O número é uma média ponderada, não uma contagem. A tabela de pesos vai de 200 até 11, definida pelo que custa a você quando aquilo está errado — APP_DEBUG=true fica em 200, a linha do nome do sistema operacional fica em 12, e app_profile e public_ipv6 ficam em 11. Qualquer chave fora dessa tabela cai para um padrão de 10, e uma chave de varredura ao vivo faz exatamente isso: db_standalone, que é genuinamente sem peso definido e aparece no relatório de divergências da própria ferramenta. Um aprovado ganha o peso inteiro, um aviso ganha metade, um problema não ganha nada.
| Pontuação | Nota | O que significa |
|---|---|---|
| 90 ou mais | A | Pronto para produção |
| 75–89 | B | Bom. Resolva os itens em amarelo e verifique de novo |
| 55–74 | C | Dá para trabalhar, mas você está deixando desempenho real na mesa |
| 35–54 | D | Não está pronto. Várias configurações vão doer sob carga |
| Abaixo de 35 | F | Não entre no ar com esta configuração |
Os bloqueadores limitam a nota
Algumas falhas não são “pontos a menos” — elas significam que a loja não pode vender. Um bloqueador limita a pontuação a 74, dois a 54, três ou mais a 34, então um bloqueador força a faixa de nota para baixo e a média ponderada só decide onde dentro dessa faixa você cai. Sem nenhum bloqueador, uma única linha vermelha ainda limita a pontuação a 88 — um A é inalcançável com qualquer vermelho na página.
A lista de bloqueadores é curta e específica, e são exatamente dezenove chaves nomeadas mais qualquer coisa que comece com sms_: .env legível pela web, logs servidos pela web, o site em modo de manutenção, um arquivo .php enviado sendo executado, lojas novas sem conseguir se cadastrar, nenhuma forma de pagamento utilizável, o banco de dados inalcançável, storage mal configurado, e-mail falhando, SMS falhando, um sql_mode sob o qual a plataforma quebra, o charset errado, o agendador não rodando, um certificado que expira em até 14 dias, e mais cinco defeitos no .env — uma APP_KEY ausente ou de fábrica, APP_DEBUG=true, um bloco de banco de dados quebrado, um bloco de e-mail quebrado e chaves duplicadas.
Note o que de propósito não é um bloqueador: arquivos acima da raiz do site serem legíveis é avaliado como um aviso, e não como bloqueador, porque isso é exposição de informação, e não uma invasão. A lista é curta de propósito — se tudo é emergência, nada é.
Uma consequência que vale dizer com todas as letras: cert_expiry é um bloqueador que só é medido em uma Verificação profunda, porque ele é lido de um handshake TLS ao vivo. Um “Verificar agora” não consegue te avisar que o seu certificado expira na semana que vem.
Por que “não medido” nunca é avaliado — e por que isso importa
Uma verificação que a ferramenta não conseguiu executar fica totalmente fora da pontuação.
Essa é a coisa mais importante de se entender sobre o número. Em um painel gerenciado, o PHP fica confinado ao diretório do próprio site — o que é correto e vale manter — e isso significa que /proc, /etc/os-release, a configuração do nginx e a configuração do pool do php-fpm não podem ser lidos de jeito nenhum. Sete verificações ficam então sem resposta para dar.
Uma ferramenta que avaliasse isso como falha te puniria por uma medida de segurança que você deve manter. Uma ferramenta que avaliasse como aprovado estaria mentindo. O SixPreflight não faz nem uma coisa nem outra: essas linhas dizem “não legível daqui”, uma linha na seção de PHP explica o porquê uma vez e dá os dois jeitos de contornar, e nenhuma delas toca na pontuação.
A mesma regra vale para a verificação de backup. Se nenhuma ferramenta de backup for encontrada, a linha fica como não medida — e não como aviso — porque os snapshots do seu provedor de hospedagem são invisíveis de dentro do servidor, e a ferramenta se recusa a chamar de quebrado algo que ela simplesmente não consegue ver.
Um servidor bem trancado não pode tirar nota baixa por estar bem trancado. Essa é a regra, e é por isso que o número vale a leitura.
A lista de correções
Cada aviso e cada problema vai parar na página O que corrigir, primeiro os vermelhos, depois em ordem de peso. Cada um traz um rótulo de impacto derivado do mesmo peso que gerou a pontuação, então nada é avaliado em uma escala e priorizado em outra.
- Impede pedidos
- Pode impedir pedidos
- Risco sério
- Risco
- Deixa o site lento
- Vale corrigir
- Arrumação
Cada card te diz o que a configuração é agora, o que deveria ser, em qual arquivo ela está, o comando a rodar se houver um, e como comprovar que a mudança pegou. Há um bloco “me mostre todas as linhas para colar” por arquivo de destino, contendo só as linhas que ainda precisam mudar — porque copiar vinte valores um a um é como um dígito se perde. Configurações para colar e comandos para rodar ficam em blocos separados; eles vão para lugares diferentes.
Os alvos de banco de dados nos cards são derivados do mesmo cálculo que gera o bloco de my.cnf que você copia, então o número de cada linha e o bloco nunca podem discordar.
Ele também lembra
A ferramenta guarda as últimas 60 varreduras em disco. A página de histórico mostra um card de “desde a última varredura” — o que quebrou de novo e o que você acabou de corrigir — você pode comparar duas verificações salvas lado a lado e exportar uma execução como arquivo de texto.
Um endpoint somente leitura ?api=findings devolve a última verificação salva em JSON, para um painel ou um monitor. Ele nunca inicia uma varredura: um monitor que disparasse uma varredura completa — uma etapa da qual baixa URLs do seu site no ar — a cada atualização do painel seria um gerador de carga fantasiado de monitor. A resposta traz run.age_seconds para que quem chama possa dizer “isto tem duas semanas” em vez de reportar notícia velha como atual.
A outra metade
Ele também tem uma segunda metade: o script de configuração
O SixPreflight lê e explica. O bin/setup-6ammart.php é a outra metade do pacote: ele faz as mudanças. A página de documentação entregue diz isso em uma linha — “O SixPreflight lê um servidor e explica o que mudar. O setup-6ammart.php é a outra metade: ele faz essas mudanças.”
Um script bash com extensão .php, de propósito
O PHP pega o arquivo, bate em um exit na linha 3 e não entrega nada a um navegador. Rode-o com bash, nunca por um navegador.
O modo padrão é uma simulação
Rodá-lo por acidente não muda nada. O --check reporta o atual contra o recomendado. O --apply faz o trabalho.
84 entradas de catálogo, 40 delas seguras de aplicar sem perguntar
A fonte da verdade dele é o mesmo catálogo de ajustes que os cards de correção usam — 84 entradas entre php, php-fpm, os, mysql, nginx, laravel e 6ammart, das quais 40 são marcadas como seguras de aplicar sem perguntar e 44 têm confirmação, com a troca envolvida declarada em uma linha, ou são impressas como instrução manual. Nenhuma entrada do segundo grupo é aplicada em silêncio, nem mesmo com --yes.
Contagem em disputa, declarada abertamente
A página docs/setup.html entregue diz 84 entradas, 40 seguras de automatizar, 44 não. O cabeçalho do próprio script e uma contagem direta dos três arquivos data/tuning-*.json.php dizem os dois 86 / 41 / 45. O número publicado mais baixo é o usado acima.
Gravações em um vhost nginx no ar, o cron do agendador e qualquer coisa que inicie um worker de fila com fila acumulada ficam todas na classe com confirmação: cada uma mostra exatamente o que está prestes a fazer e pergunta, e o --yes não responde por elas.
Então o SixPreflight é um verificador com um corretor opcional ao lado, e não um verificador sozinho.
Quatro guias vêm junto
O conjunto de documentação dá ao corretor um quarto das suas páginas.
Como usar
index.html — o painel, os dois botões de varredura, a lista de correções e a página de histórico.
O que instalar, e de onde vem cada credencial
requirements.html — os pacotes, as extensões e de qual console cada chave é emitida.
Qual PHP, banco de dados e sistema operacional
versions.html — a recomendação, o quadro classificado e o motivo por trás de cada escolha.
O que o script de configuração faz
setup.html — o catálogo, quais entradas são automatizadas e quais param e perguntam.
Por que isso é melhor que adivinhar
Quatro coisas que você não consegue conferir no olho
Contra o seu próprio julgamento
A página de pré-requisitos do fornecedor lista mínimos, e mínimos são a coisa errada para se construir em cima. “MySQL 5.7+ / MariaDB 10.3+” esconde que os dois se comportam de formas diferentes sob ONLY_FULL_GROUP_BY: o MySQL 5.7.5+ o habilita por padrão e dá conta, porque deriva a dependência funcional de que esses relatórios dependem; o MariaDB o deixa desligado, e quebra se você o ligar — o relatório item a item então falha com ERROR 1055. Isso foi verificado rodando o relatório nos dois, não presumido. Então o modo tem de ficar desligado no MariaDB, e no MySQL o padrão deve ser deixado em paz. A ferramenta avalia essa combinação específica, e não o número da versão.
Contra uma página phpinfo()
O phpinfo() imprime valores, e nada mais. O seu max_execution_time real é o menor entre o do php.ini e o request_terminate_timeout do php-fpm; o SixPreflight calcula esse número efetivo e o avalia. O phpinfo() não consegue dimensionar o seu buffer pool do InnoDB a partir da sua RAM real, da sua contagem real de workers do php-fpm e do tamanho real dos seus dados — o SixPreflight consegue, e depois confere se os workers do php-fpm cabem dentro do max_connections. Ele não consegue calcular um alvo de contagem de arquivos do OPcache a partir do número de arquivos PHP do seu projeto. E não consegue te dizer o que a internet consegue baixar do seu site, porque ele não faz requisições.
Contra a palavra da sua empresa de hospedagem
“O servidor está bem” não é uma afirmação que alguém possa conferir. Esta é: ele baixa o /.env da sua própria URL no ar e te diz o que voltou. Ele abre uma sessão SMTP de verdade. Ele gera um token real do Firebase. Ele faz uma chamada real ao Maps. Cada uma dessas coisas é um fato com data e hora, salvo em um arquivo que você pode exportar e enviar a quem disse que estava tudo bem.
E ele te diz quando não sabe
Uma ferramenta que sempre tem uma resposta está adivinhando em algum lugar. Esta nomeia as linhas que não conseguiu medir e as tira da pontuação.
Já está no SixPanel?
Já está no SixPanel? Você já tem isto
No cPanel, aaPanel, CloudPanel ou em um VPS vazio, o SixPreflight é para você
Você é dono do servidor web, do PHP, da configuração do banco de dados, do cron e do certificado, então cada bloco para colar e cada comando são seus para usar.
Em um servidor SixPanel ele já está lá
O SixPanel monta o SixPreflight dentro da loja e o mostra como a página de Check-up da loja do próprio painel. Você não baixa nada, e as configurações de que o painel é dono apontam para a página do painel dona delas, em vez de para um bloco para colar que o próximo deploy sobrescreveria.
Ver o SixPanelMais uma nota honesta sobre esse modo: em uma máquina com SixPanel, as configurações da própria aplicação — pagamentos, e-mail, SMS, Firebase, mapas, fuso horário, moeda — ficam fora da pontuação do servidor e são listadas à parte, porque são trabalho do dono da loja e não do servidor. O veredito em linguagem simples no topo continua falando pelo negócio inteiro.
Requisitos e como rodar
Requisitos, como rodar e o que ele vai mudar
O que a própria ferramenta precisa
| Requisito | O que ele precisa |
|---|---|
| PHP | 8.2 ou mais novo para rodar a ferramenta |
| Servidor web | Qualquer um que sirva o diretório public/ do seu site |
| Permissão de escrita | preflight/config.php (ou cole um hash de senha à mão) e preflight/history/ |
| Aplicação | Nenhuma necessária. Ele roda em um servidor vazio |
| Painéis que ele reconhece | cPanel · aaPanel · CloudPanel · DirectAdmin · Plesk · CWP · servidor simples |
Contra o que ele avalia o seu servidor
| Recurso | Piso | O que escolher |
|---|---|---|
| vCPU | 2 | 4 |
| RAM | 4 GB | 8 GB |
| Disco livre | 20 GB na página de requisitos — mas a própria verificação de disco aprova em 20 GB, avisa entre 10 e 20, e só reprova abaixo de 10 | 40 GB+ |
| Tipo de armazenamento | SSD | NVMe |
| Tipo de hospedagem | VPS ou dedicado | VPS com root |
A linha de disco livre realmente discorda de si mesma, e você vai ver isso na tela
O Requirements::platform() fixa no código “precisa de 20 GB, escolha 40 GB+”, enquanto a verificação de hardware avalia contra min_free_disk_gb = 10 do config.php — então um servidor com 12 GB livres é uma falha de requisito em uma tabela e um aviso amarelo em outra, na mesma página.
No navegador — o jeito normal
Envie a pasta
Envie a pasta preflight/ inteira para o diretório public/ do seu site.
Defina uma senha na primeira tela
Abra https://seu-dominio/preflight/ e defina uma senha. Ele não começa sem uma, e quem abrir primeiro é quem a define — então faça isso assim que o envio terminar. Mínimo de oito caracteres. Se o config.php não tiver permissão de escrita, a página avisa e te dá o comando password_hash() de uma linha para colar no lugar.
Aperte um botão
Verificar agora leva cerca de um segundo. Verificação profunda acrescenta os testes externos.
Apague a pasta quando terminar
Ela é protegida, mas reporta detalhes internos do servidor e não tem motivo para ficar em um site no ar.
Opcional: restrinja o acesso por IP com allow_ips no config.php (endereços únicos ou faixas CIDR, IPv4 e IPv6). Atrás do Cloudflare ou de um balanceador de carga, o endereço que ele enxerga é o do proxy, então uma lista de permissão com o seu próprio IP te tranca do lado de fora — deixe vazia e confie na senha, ou restrinja no proxy. Se você se trancar do lado de fora, a página 403 imprime o endereço que realmente chegou e o que o proxy afirma que ele é.
O que ele vai mudar, se você pedir
A varredura lê. Quatro superfícies do pacote podem escrever, e nenhuma delas dispara sozinha — cada uma precisa de um botão ou de um comando.
A página de Logs de erro pode limpar um log
O botão Limpar trunca o arquivo com ftruncate em vez de apagá-lo, porque o PHP, o MySQL e o nginx mantêm esses arquivos abertos e removê-los os deixa escrevendo em um descritor sem nome. Ele exige o token CSRF e, se o arquivo não tiver permissão de escrita para o usuário do PHP, imprime o comando de shell em vez de agir. Isso é uma escrita em logs do Laravel, do MySQL (lento/erro), do php-fpm e do servidor web — arquivos que não pertencem à ferramenta.
A página de Alerta de pedido de teste envia um push de verdade
Para um dispositivo real de loja ou de entregador, pelo próprio comando artisan da plataforma. Existe um botão de simulação “Mostrar o que seria enviado”; ele não é o padrão.
O teste de desempenho do banco de dados cria e apaga a própria tabela
Chamada zz_preflight_bench_<random>, com um sufixo aleatório novo a cada execução — o argumento completo de segurança está abaixo.
Definir uma senha reescreve o config.php
E a ação “salvar perfil” do painel escreve os valores de RAM e vCPU informados pelo operador no arquivo de perfil do servidor. Os dois ficam dentro da pasta preflight/.
E, à parte e de propósito: o bin/setup-6ammart.php aplica mudanças quando você o roda com --apply. É esse o objetivo dele.
Pela linha de comando — sem aplicação, sem navegador
As duas ferramentas de comparação são só de linha de comando e se recusam a responder por HTTP.
php preflight/server-compare.php # medir esta máquinaphp preflight/server-compare.php --save=box-a.jsonphp preflight/server-compare.php --compare=box-a.json,box-b.jsonphp preflight/detect-size.php # registrar RAM e vCPUNão são os únicos arquivos com essa proteção. Onze arquivos do pacote se recusam a rodar fora da linha de comando — esses dois, oito ferramentas de teste, incluindo o tests/smoke.php, e o bin/setup-6ammart.php. O tests/smoke.php é o motivo de essa proteção importar: deixado acessível pela web e sem senha, que foi como ele já foi entregue um dia, um único GET anônimo custava onze segundos de CPU, uma sondagem completa do banco de dados da aplicação, dez requisições que o servidor fazia à sua própria URL pública, e chamadas externas ao Google Maps, ao servidor SMTP configurado e ao Firebase, repetíveis quantas vezes alguém quisesse. A varredura agora procura exatamente esse arquivo no seu servidor, porque uma pasta como esta é copiada entre máquinas por anos.
O server-compare.php é autônomo e tem zero dependências — não precisa de aplicação nenhuma, o que é o que faz dele a ferramenta certa para comparar dois servidores que você está pensando em alugar, antes de se comprometer com qualquer um deles.
Como ler as pontuações do teste de desempenho
As duas pontuações são normalizadas para significarem a mesma coisa em qualquer nível de dificuldade — só a máquina as muda, e mais alto é mais rápido. Uma vCPU de nuvem atual marca cerca de 100. Rode duas ou três vezes em horários diferentes: uma instância burstable cai bruscamente depois que os créditos acabam, e isso não aparece em uma execução só. A máquina de referência por trás desse 100 é uma vCPU AMD EPYC 7713 com NVMe local, PHP 8.3, OPcache ligado.
Na pontuação de banco de dados, olhe em especial os INSERT/s de linha única: com innodb_flush_log_at_trx_commit=1, cada um espera uma sincronização com o disco, então esse número é na verdade a latência de fsync do seu armazenamento. É a diferença mais clara entre provedores.
Aplique o my.cnf sugerido primeiro, e só então compare dois servidores — caso contrário você está comparando configurações, e não máquinas.
O que instalar de verdade
A recomendação do próprio SixPreflight, para uma instalação nativa sem contêineres:
- Ubuntu 26.04 LTS
- PHP 8.5
- MariaDB 11.8
PHP 8.5
O que o próprio arquivo do seu release trouxer — 8.5 no Ubuntu 26.04, 8.4 no Debian 13, 8.3 no Ubuntu 24.04. Duvidou-se do 8.5 porque o phpspreadsheet, via maatwebsite/excel, declara php <8.5; isso é uma declaração no composer.json e não uma medição, a checagem de plataforma do composer está desligada, e rodar o código no 8.5.4 produziu uma exportação de planilha idêntica byte a byte tanto na árvore pura do CodeCanyon quanto no nosso próprio fork. Todos rodam praticamente na mesma velocidade, então esta não é uma decisão de velocidade — pegue o que o seu release corrige para você.
MariaDB 11.8 ou 10.11
Qualquer um, o que o seu release trouxer — medido na mesma loja, 11.8 contra 10.11 dá empate. O que não dá empate é o sabor: as duas versões de MySQL precisam de mudanças no código antes de o 6amMart rodar nelas, porque a busca de itens ativa uma flag de otimizador exclusiva do MariaDB e duas migrações de índice leem um catálogo do servidor em uma caixa que o MySQL não devolve, deixando o schema aplicado pela metade.
Ubuntu 26.04
Empatado com o Ubuntu 24.04 e o Debian 13 em velocidade — as diferenças medidas foram menores que a divergência de uma máquina consigo mesma. O que os separa é a janela de suporte: abril de 2031 para o 26.04, contra maio de 2029 para o 24.04 e agosto de 2028 para o Debian 13. Esta é uma decisão de janela de suporte, não de velocidade.
O que esses números de motores cobrem Eles vêm de uma máquina e de um conjunto de dados — o dump de uma loja real com 66,701 pedidos — com cada motor migrado primeiro e os conjuntos de índices resultantes comparados, chegando a 460 índices, idênticos nos cinco, para que a comparação seja de motores e não de índices ausentes. Eles comparam os cinco motores entre si naquela máquina. Não são uma afirmação sobre quão rápido o 6amMart é em geral.
Nada aqui diz que um sistema operacional é mais rápido que outro: as diferenças medidas entre sistemas operacionais foram menores que a variação de uma única máquina contra si mesma.
Como ele roda
Nada no pacote confere licença, conta ou data de validade, e nada nele reporta qualquer coisa de volta para a AllsWeb. As chamadas externas que ele faz são todas para lugares com os quais você já lida — o seu próprio site, o seu próprio servidor SMTP, os endpoints de token e de geocodificação do Google — mais um serviço público de eco de IP para descobrir o seu próprio endereço.
O motivo honesto de essas verificações existirem: elas saíram de construir e consertar estes servidores, e cada uma delas é uma pergunta que teríamos de fazer a você de qualquer jeito. Um dono de loja que consegue respondê-las antes de entrar em contato economiza um dia; um dono de loja que não consegue ganha um relatório para enviar à sua hospedagem.
Limites honestos
Leia isto antes de confiar no número
Ele não consegue ver o que o servidor não mostra
Verificações que precisam de shell_exec ou de /proc caem para “não medido” em vez de adivinhar. Painéis gerenciados desativam coisas diferentes, então algumas linhas ficam vazias em um host e preenchidas em outro.
Em um painel gerenciado, sete verificações ficam sem resposta
O open_basedir confina o PHP ao diretório do site. Isso é correto e vale manter. As linhas dizem isso e ficam fora da pontuação.
Um “Verificar agora” não enxerga seis das linhas de servidor web, e uma delas é um bloqueador
Compressão, cache de estáticos, keep-alive ao vivo, o banner do servidor, HSTS e validade do certificado são lidos de uma resposta real, então só aparecem em uma Verificação profunda — e o cert_expiry está na lista de bloqueadores. Rode a Verificação profunda antes de confiar em um resultado verde.
A ferramenta se contradiz sobre disco livre
A tabela de requisitos diz que você precisa de 20 GB livres; a verificação de disco chama 10–20 GB de aviso e só reprova abaixo de 10. Duas respostas para uma pergunta, na mesma página.
Ele reporta com o que o servidor diz estar configurado
Se um painel aplica configuração em uma camada que esta ferramenta não enxerga, confie na interface do próprio painel e não nela. O cPanel e o aaPanel gerenciam a configuração de PHP e MySQL pela interface deles e podem sobrescrever arquivos editados à mão; o CloudPanel e um servidor simples deixam os arquivos de configuração valendo. Se uma configuração fica voltando ao valor antigo depois de um reinício, é o painel reescrevendo — mude pelo painel.
Os testes de desempenho medem esta máquina neste momento
Um vizinho barulhento deixa todos os números pessimistas — confira a linha de carga média antes de tirar conclusões.
A etapa de exposição não é um teste de invasão
Ela baixa uma lista fixa de endereços sabidamente arriscados da sua própria URL e reporta o que voltou. Ela não procura vulnerabilidades desconhecidas e não é uma auditoria de código.
Uma coisa realmente não pode ser testada a partir de um servidor
A chave de cliente do Google Maps é restrita por referenciador do navegador, então a ferramenta consegue te dizer que ela está ausente, ou que ela é perigosamente idêntica à sua chave de servidor — mas não consegue verificar do lado do servidor uma chave corretamente restrita, e diz isso em vez de aprová-la.
As contagens de linhas na tabela de tamanhos são estimativas
Elas vêm do information_schema. Contagens exatas significariam uma varredura completa de cada tabela em um site no ar.
Um envio enterrado mais de cinco diretórios abaixo do artisan cai no modo autônomo
Em silêncio — a busca pela raiz da aplicação para em cinco níveis.
Ele é um verificador antes de tudo
A varredura em si não muda nada. Quatro superfícies do pacote escrevem quando você aperta o botão delas, e o bin/setup-6ammart.php aplica mudanças quando você o roda com --apply. As cinco estão listadas acima.
Ele é seguro em uma loja no ar?
Sim, e aqui está exatamente por quê.
As sondagens em dados reais são somente leitura por construção
Toda sondagem passa por um único método query() que recusa qualquer coisa que não comece com SELECT, EXPLAIN, SHOW ou WITH — e não há caminho de código nessa classe capaz de emitir INSERT, UPDATE, DELETE, ALTER, CREATE ou DROP, que é a garantia que realmente sustenta a promessa. A sessão é colocada em TRANSACTION READ ONLY onde o servidor suporta isso, então até um erro seria recusado pelo banco de dados, e não por este código. Cada instrução carrega um limite de 15 segundos no servidor, então uma sondagem contra uma tabela inesperadamente enorme não pode ficar segurando recursos — e uma sondagem que estoura esse limite é reportada como “lenta demais”, o que já é o achado. Verificado: as contagens de linhas e o SUM(order_amount) são idênticos antes e depois.
O teste de desempenho do banco de dados nunca toca em uma tabela da aplicação
Todo objeto que ele cria se chama zz_preflight_bench_<random>, com um sufixo aleatório novo a cada execução; ele confere se o nome está livre antes de criar qualquer coisa e aborta em vez de tocar em uma tabela existente; nenhuma instrução dele pode nomear uma tabela que ele não criou; a limpeza só acontece se a tabela tiver sido de fato criada, roda em um bloco finally e em um handler de encerramento, e grava commit em lotes pequenos, para que nada segure um bloqueio longo. Verificado: as contagens de linhas de pedidos e itens são idênticas antes e depois, e nenhuma tabela zz_preflight_ sobrevive à execução.
O escopo é a tabela, não o banco de dados, e essa diferença é a promessa inteira
Ele nunca lê nem escreve em nenhuma tabela da aplicação — essa é a redação do próprio README e ela é a certa. O teste de desempenho cria e apaga uma tabela própria dentro do banco de dados da aplicação, com um nome que ele mesmo gera, e a remove depois; nada mais nesse banco de dados é tocado.
Dentro da própria pasta ele escreve uma coisa
preflight/history/, um arquivo por varredura salva. Esses arquivos descrevem em detalhe as fraquezas do servidor, então cada um se chama .json.php e começa com uma instrução exit do PHP — baixado por HTTP, o servidor web o executa, ele para na hora e não devolve nada. Isso vale no nginx também, que ignora o .htaccess.
Ficou com uma lista vermelha e sem tempo?
Envie o relatório exportado para nós. Nós instalamos, configuramos e entregamos o 6amMart no seu próprio servidor, com um engenheiro sênior assinando a entrega.
Servidor pronto e a loja ainda lenta?
O SixPreflight diz se o servidor está pronto. Se a loja em si está lenta, isso é a aplicação, não o servidor — e é o que o serviço de instalação do 6amMart agora entrega por cima da versão mais recente do 6amMart: o build do 6amMart otimizado pela AllsWeb mediu 10× a 22× mais rápido — 90–95% mais rápido — em todas as telas voltadas ao cliente, medido no servidor em produção, com o CDN desviado.
FAQ
Perguntas que as pessoas realmente fazem
Como eu sei se o meu servidor está pronto para o 6amMart?
Rode o SixPreflight nele. Ele tem 163 verificações em hardware, PHP, a aplicação, .env, permissões, o servidor web, cache, o banco de dados, exposição pública e todo serviço externo. Uma Verificação profunda em uma instalação 6amMart roda o conjunto completo disponível a ela — 160 verificações distintas, e no máximo 157 linhas em uma máquina real rodando um servidor web; um “Verificar agora” rápido roda 123, no máximo 120 nessa mesma máquina, pulando as 12 verificações de exposição, as 21 de serviços e as seis linhas de servidor web que precisam de uma resposta ao vivo. De qualquer jeito, tudo termina em uma frase, uma nota em letra de A a F e uma lista ordenada do que corrigir primeiro.
O SixPreflight muda alguma coisa no meu servidor?
A varredura não. Ela nunca lê nem escreve em uma tabela da aplicação, e nunca envia e-mail ou SMS a ninguém. Quatro superfícies escrevem quando você aperta o botão delas: a página de Logs de erro pode truncar um arquivo de log, a página de Alerta de pedido de teste envia um push de verdade para um dispositivo real, o teste de desempenho opcional do banco de dados cria e apaga a própria tabela, e definir uma senha reescreve o config.php da própria ferramenta. O pacote também traz o bin/setup-6ammart.php, que aplica mudanças de propósito quando você o roda com --apply.
É seguro rodar em uma loja no ar que está recebendo pedidos?
Sim. As sondagens do banco de dados são somente leitura por construção — o método query() recusa qualquer coisa que não comece com SELECT, EXPLAIN, SHOW ou WITH, não há caminho de código nessa classe capaz de emitir uma escrita, e a sessão roda em TRANSACTION READ ONLY onde isso é suportado. O teste de desempenho opcional trabalha apenas em uma tabela que ele mesmo cria com um nome aleatório, e a remove em um bloco finally e em um handler de encerramento. Os dois foram verificados comparando as contagens de linhas e o SUM(order_amount) antes e depois.
Eu preciso do 6amMart para usar?
Não. Ele detecta para o que está olhando. Em um servidor vazio, sem aplicação, ele ainda verifica hardware, PHP, o servidor de banco de dados, o servidor web, permissões e exposição — embora as 14 verificações de .env, as 12 verificações da aplicação Laravel, as 9 verificações de plataforma do 6amMart e as 5 verificações de tempo real não tenham nada para ler, deixando apenas a linha de perfil da etapa da aplicação. Em qualquer aplicação Laravel, tudo sobre o servidor continua se aplicando e as verificações específicas do 6amMart são puladas em vez de adivinhadas. No 6amMart, toda verificação que pode rodar, roda.
De qual pontuação eu preciso antes de entrar no ar?
90 ou mais é um A — pronto para produção. Abaixo disso, leia primeiro os bloqueadores: um único bloqueador limita a pontuação a 74, por melhor que seja todo o resto, dois limitam a 54, três ou mais a 34. Mesmo sem bloqueadores, uma linha vermelha te limita a 88. Bloqueadores são as coisas que impedem a loja de vender — nenhuma forma de pagamento utilizável, e-mail falhando, o banco de dados inalcançável, .env legível pela web, um certificado que expira em até 14 dias. Rode uma Verificação profunda antes de confiar no número: esse último item, e outras cinco linhas de servidor web, não são medidos de jeito nenhum em uma verificação rápida.
Por que algumas linhas dizem “não legível daqui”?
Porque o seu painel de hospedagem confina o PHP ao diretório do seu próprio site, o que é correto e vale manter — então /proc, /etc/os-release, a configuração do nginx e a configuração do pool do php-fpm realmente não podem ser lidos. Sete verificações ficam então sem resposta. Elas são reportadas com honestidade e ficam totalmente fora da pontuação, para que um servidor bem trancado nunca seja punido por estar bem trancado.
Ele funciona em cPanel, aaPanel, CloudPanel ou em um VPS simples?
Sim — esse é o mercado principal dele. Ele reconhece cPanel, aaPanel, CloudPanel, DirectAdmin, Plesk, CWP e um servidor simples, e dá comandos e caminhos de instalação por painel. Vale saber: o cPanel e o aaPanel gerenciam a configuração de PHP e MySQL pela interface deles e podem sobrescrever arquivos editados à mão, então, se uma configuração fica voltando ao valor antigo depois de um reinício, mude pelo painel.
Ele só me diz o que está errado, ou consegue corrigir?
Os dois, e a metade que corrige é opcional. O painel pede que você faça cada mudança à mão primeiro, porque quem faz uma mudança entende o que mudou. Quando isso não é prático, o bin/setup-6ammart.php faz o mesmo trabalho pela linha de comando: simulação por padrão, --check para reportar, --apply para agir. Ele aplica apenas as entradas do catálogo marcadas como seguras de automatizar — 40 das 84 entradas publicadas — e pergunta ou imprime o resto, inclusive com --yes.
Eu uso o SixPanel. Preciso baixar isto?
Não. O SixPanel monta o SixPreflight dentro da loja e o mostra como a página de Check-up da loja do painel. Nesse modo ele remove os blocos para colar de tudo de que o painel é dono — o servidor web, o PHP, a configuração do banco de dados, o cron, o worker de fila, o certificado — e aponta para a página do painel dona de cada configuração, porque um valor colado à mão ali se perde no deploy seguinte. Ele mantém todas as verificações de nível de aplicação.
Qual versão de PHP e de banco de dados eu devo instalar de verdade?
Ubuntu 26.04 LTS, e depois o que o próprio arquivo dele trouxer — PHP 8.5 e MariaDB 11.8 — para uma instalação nativa. Duvidou-se do PHP 8.5 porque uma dependência declara um limite abaixo dele, mas esse limite é uma declaração e não uma medição: rodar o código no 8.5.4 deu uma exportação de planilha idêntica byte a byte na árvore pura do CodeCanyon e no nosso fork. Todas as versões de PHP e de MariaDB medidas rodaram praticamente na mesma velocidade, então nada disso é uma decisão de velocidade. O que é real é o sabor: as duas versões de MySQL precisam de mudanças no código antes de o 6amMart rodar nelas, porque a busca de itens ativa uma flag de otimizador exclusiva do MariaDB e duas migrações de índice leem um catálogo do servidor em uma caixa que o MySQL não devolve.
Posso ligar o resultado ao meu próprio painel?
Sim. O ?api=findings devolve a última verificação salva em JSON por HTTP Basic auth, com uma versão de contrato estável. Ele nunca inicia uma varredura, e a resposta traz run.age_seconds para que o seu painel possa dizer “esta leitura tem duas semanas” em vez de apresentar notícia velha como atual.
Envie uma pasta. Abra no navegador. Receba uma resposta.
Sempre a versão atual, rodando no seu próprio servidor. Ele lê primeiro, e te diz o que não conseguiu medir em vez de adivinhar.
Nada no pacote confere licença, conta ou data de validade, e nada nele reporta qualquer coisa de volta para a AllsWeb.