Magento 2

Como executar comandos no Magento 2 sem o acesso via SSH / Terminal

Como executar comandos (ex: setup:static-content:deploy) no Magento 2 sem o acesso via SSH / Terminal.

Em hospedagem compartilhadas você poderá encontrar dificuldade para ter o acesso SSH (terminal) em mãos, dessa forma a execução de alguns comandos no Magento 2 será inviabilizada.

Magento 2 sem o acesso via SSH

Primeiro, crie um arquivo “cmd.php” na raiz de seu servidor aonde está a instalação do Magento 2.

Adicione o seguinte conteúdo:

use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);

$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$k[0]='bin/magento';
$k[1]='setup:static-content:deploy';
$_SERVER['argv']=$k;
try { 
    $handler = new \Magento\Framework\App\ErrorHandler();
    set_error_handler([$handler, 'handler']);
    $application = new Magento\Framework\Console\Cli('Magento CLI');
    $application->run();
} catch (\Exception $e) {
    while ($e) {
        echo $e->getMessage();
        echo $e->getTraceAsString();
        echo "\n\n";
        $e = $e->getPrevious();
    }
}

Altere: $k[1]=’setup:static-content:deploy’;

O content:deploy é o comando desejado, faça a substituição pelo comando que você deseja executar.

Observação: o código não irá retornar nenhuma mensagem caso a execução do comando seja feita com sucesso!

Lista de comandos úteis

  • setup:upgrade
  • cache:clean
  • cache:flush
  • cache:status
  • cache:enable [cache_type]
  • cache:disable [cache_type]
  • setup:static-content:deploy
  • indexer:reindex
  • indexer:info
  • indexer:status
  • indexer:show-mode
  • module:enable Namespace_Module
  • module:disable Namespace_Module
  • module:uninstall Namespace_Module
  • deploy:mode:show
  • deploy:mode:set developer
  • deploy:mode:set production
  • setup:di:compile

Utilizando a função system()

system('php bin/magento cache:status');

Altere o cache:status para o comando que você desejar.

Essa opção dificilmente irá funcionar em hospedagem compartilhadas, pois a função system() vem desativada.

Observações

Essa não é uma pratica aconselhada.

(alternativa super lenta) Você também pode baixar a loja para o ambiente local, execute os comandos / modificações e faça o upload dos diretórios pub/* e var/* de volta para o servidor. Esta opção é válida apenas para alguns tipos de comandos, no geral você terá que subir tudo novamente, banco e arquivos.

Post Recentes

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

13 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

2 dias atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

3 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

4 dias atrás