Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v3.x.
#92173
Olá pessoal.

Sou novo nessa área de e-commerce e estou ajudando um amigo com uma troca de servidores.

Saímos de um host e migramos para a Locaweb, contratamos a hospedagem go deles e configuramos o ambiente com o PHP 7.3 e o Opencart Versão 3.0.3.3 (Brasil 1.7.2)

Fiz um backup dos arquivos no servidor de origem, transferi via FTP para o novo servidor, restaurei o banco de dados e configurei os paths, novo banco e senhas no arquivo config.php da pasta raiz e config.php da pasta admin.
O site funcionou, conseguimos fazer tudo nele, exceto as imagens de banners e produtos não funcionaram.

A logo que esta na pasta image/catalog/logotipo.jpg carregou, o que mostra que o sistema consegue acessar as imagens salvas.

A pasta image/cache está com permissão 755
A pasta storage foi movida para fora do public_html e também tudo que está la tem permissão 755.

Pelo admin, nao consigo criar uma nova pasta para imagens nem fazer upload de novos arquivos, diz que o diretório não existe. (Aviso: A pasta não existe!)

Segue o config.php raiz
Código: Selecionar todos
define('DIR_APPLICATION', '/home/novoacessoriosot1/public_html/catalog/');
define('DIR_SYSTEM', '/home/novoacessoriosot1/public_html/system/');
define('DIR_IMAGE', '/home/novoacessoriosot1/public_html/image/');
define('DIR_WEBHOOK', '/home/novoacessoriosot1/public_html/webhook/');
define('DIR_STORAGE', '/home/novoacessoriosot1/storage/');
define('DIR_LANGUAGE', DIR_APPLICATION . 'language/');
define('DIR_TEMPLATE', DIR_APPLICATION . 'view/theme/');
define('DIR_CONFIG', DIR_SYSTEM . 'config/');
define('DIR_CACHE', DIR_STORAGE . 'cache/');
define('DIR_DOWNLOAD', DIR_STORAGE . 'download/');
define('DIR_LOGS', DIR_STORAGE . 'logs/');
define('DIR_MODIFICATION', DIR_STORAGE . 'modification/');
define('DIR_SESSION', DIR_STORAGE . 'session/');
define('DIR_UPLOAD', DIR_STORAGE . 'upload/');
Segue o admin/config.php
Código: Selecionar todos
define('DIR_APPLICATION', '/home/novoacessoriosot1/public_html/admin/');
define('DIR_SYSTEM', '/home/novoacessoriosot1/public_html/system/');
define('DIR_IMAGE', '/home/novoacessoriosot1/public_html/image/');
define('DIR_WEBHOOK', '/home/novoacessoriosot1/public_html/webhook/');
define('DIR_STORAGE', '/home/novoacessoriosot1/storage/');
define('DIR_CATALOG', '/home/novoacessoriosot1/public_html/catalog/');
define('DIR_LANGUAGE', DIR_APPLICATION . 'language/');
define('DIR_TEMPLATE', DIR_APPLICATION . 'view/template/');
define('DIR_CONFIG', DIR_SYSTEM . 'config/');
define('DIR_CACHE', DIR_STORAGE . 'cache/');
define('DIR_DOWNLOAD', DIR_STORAGE . 'download/');
define('DIR_LOGS', DIR_STORAGE . 'logs/');
define('DIR_MODIFICATION', DIR_STORAGE . 'modification/');
define('DIR_SESSION', DIR_STORAGE . 'session/');
define('DIR_UPLOAD', DIR_STORAGE . 'upload/');
Poderiam me ajudar a identificar a causa?

-----------------------EDIT------------------------

Descobri a causa, o host da Locaweb usa links simbólicos, adicionando o pedaço de codigo fornecido por eles, descobri algumas coisas.
https://forum.opencart.com/viewtopic.php?t=199576
Código: Selecionar todos
$this->log->write('filemanager upload');
$this->log->write('this needs to be a valid directory: '.$directory);
$this->log->write('this: '.substr(str_replace('\\', '/', realpath($directory)), 0, strlen(DIR_IMAGE . 'catalog')));
$this->log->write('needs to equal this: '.str_replace('\\', '/', DIR_IMAGE . 'catalog'));
como resposta no log tive
Código: Selecionar todos
05-06-2025 17:21:48 - filemanager upload
05-06-2025 17:21:48 - this needs to be a valid directory: /home/novoacessoriosot1/public_html/image/catalog
05-06-2025 17:21:48 - this: /home/storage/e/5a/92/novoacessoriosot1/public_ht
05-06-2025 17:21:48 - needs to equal this: /home/novoacessoriosot1/public_html/image/catalog
Ai descobri que o path seria o
Código: Selecionar todos
/home/storage/e/5a/92/novoacessoriosot1
Seria essa a única forma de resolver?
#92174
Ola @Michel Reips
Para descobrir a raiz exata do local onde estão os arquivos do site, faça o seguinte.
Crie um arquivo exemplo: "meu_dir.php" com as instruções abaixo, coloque na raiz(onde esta os arquivos do sue site) e visite ele através da URL do seu site.
Algo como: www.meusite.com.br/meu_dir.php
Ele vai escrever na tela a localização do diretório raiz.
Código: Selecionar todos
<?php
// mostra o diretório desde a raiz
echo getcwd();
Adicione esse caminho ao seu arquivo de config, e admin/config, posterior isso deve estar totalmente funcional.
:D