opencartbrasil / ocmod-editor

Editor online para arquivos XML no formato OCMOD integrado com o OpenCart.
https://www.opencartbrasil.com.br
GNU General Public License v3.0
30 stars 13 forks source link

Problemas com determinada configuração #1

Closed periscuelo closed 9 years ago

periscuelo commented 9 years ago

Primeiramente parabéns pela iniciativa. Fiz alguns testes em um servidor do terra e tive problemas. No download do arquivo, ele gera o arquivo com o erro abaixo dentro do próprio arquivo xml.

<b>Warning</b>: filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;modification&gt;
    &lt;name&gt;Acrescentar url amigável ao restante do opencart&lt;/name&gt;
    &lt;code&gt;acrescentar-url-amigavel-ao-restante-do-opencart&lt;/code&gt;   
    &lt;version&gt;1.2&lt;/version&gt;
    &lt;author&gt;Ibrahim Brumate&lt;/author&gt;
    &lt;link&gt;http://www.opencartbrasil.com.br&lt;/link&gt;

    &lt;file path=&quot;catalog/controller/common/seo_url.php&quot;&gt;
        &lt;operation&gt;
            &lt;search&gt;
                &lt;![CDATA[
                    class ControllerCommonSeoUrl extends Controller {
                ]]&gt;
            &lt;/search&gt;
            &lt;add position=&quot;after&quot;&gt;
                &lt;![CDATA[
                    private $url_list = array (
                        'common/home' =&gt; '',
                        'account/wishlist' =&gt; 'lista-presentes',
                        'account/account' =&gt; 'conta',
                        'account/edit' =&gt; 'conta/editar',
                        'account/password' =&gt; 'conta/senha',
                        'account/address' =&gt; 'conta/enderecos',
                        'account/address/edit' =&gt; 'conta/enderecos/editar',
                        'account/reward' =&gt; 'conta/pontos',
                        'account/login' =&gt; 'conta/acessar',
                        'account/logout' =&gt; 'conta/sair',
                        'account/order' =&gt; 'conta/historico',
                        'account/order/info' =&gt; 'conta/historico/detalhes',
                        'account/newsletter' =&gt; 'conta/informativo',
                        'account/forgotten' =&gt; 'conta/recuperar',
                        'account/download' =&gt; 'conta/downloads',
                        'account/return' =&gt; 'conta/devolucoes',
                        'account/return/add' =&gt; 'conta/devolucoes/registrar',
                        'account/transaction' =&gt; 'conta/transacoes',
                        'account/register' =&gt; 'conta/registrar',
                        'account/recurring' =&gt; 'conta/assinaturas',
                        'account/voucher' =&gt; 'conta/comprar-vale-presentes',
                        'affiliate/account' =&gt; 'afiliados',
                        'affiliate/edit' =&gt; 'afiliados/editar',
                        'affiliate/password' =&gt; 'afiliados/senha',
                        'affiliate/payment' =&gt; 'afiliados/pagamento',
                        'affiliate/tracking' =&gt; 'afiliados/codigo',
                        'affiliate/transaction' =&gt; 'afiliados/transacoes',
                        'affiliate/logout' =&gt; 'afiliados/sair',
                        'affiliate/forgotten' =&gt; 'afiliados/recuperar',
                        'affiliate/register' =&gt; 'afiliados/registrar',
                        'affiliate/login' =&gt; 'afiliados/acessar',
                        'checkout/cart' =&gt; 'carrinho',
                        'checkout/checkout' =&gt; 'carrinho/finalizar',
                        'checkout/voucher' =&gt; 'vale-presentes',
                        'checkout/success' =&gt; 'pedido-efetuado',
                        'information/contact' =&gt; 'contato',
                        'information/budget' =&gt; 'orcamento-personalizado',
                        'information/sitemap' =&gt; 'mapa-loja',
                        'information/news' =&gt; 'noticias',
                        'product/special' =&gt; 'promocoes',
                        'product/manufacturer' =&gt; 'fabricantes',
                        'product/compare' =&gt; 'lista-comparacao',
                        'product/search' =&gt; 'busca'
                    );
                ]]&gt;
            &lt;/add&gt;
        &lt;/operation&gt;
        &lt;operation&gt;
            &lt;search&gt;
                &lt;![CDATA[
                    $this-&gt;request-&gt;get['route'] = 'error/not_found';
                ]]&gt;
            &lt;/search&gt;
            &lt;add position=&quot;after&quot; offset=&quot;4&quot;&gt;
                &lt;![CDATA[
                    if ( $_s = $this-&gt;setURL($this-&gt;request-&gt;get['_route_']) ) {
                        $this-&gt;request-&gt;get['route'] = $_s;
                    }
                ]]&gt;
            &lt;/add&gt;
        &lt;/operation&gt; 
        &lt;operation&gt;
            &lt;search&gt;
                &lt;![CDATA[
                    if ($url) {
                ]]&gt;
            &lt;/search&gt;
            &lt;add position=&quot;before&quot; offset=&quot;3&quot;&gt;
                &lt;![CDATA[
                    if( $_u = $this-&gt;getURL($data['route']) ){
                        $url .= $_u;
                        unset($data[$key]);
                    }
                ]]&gt;
            &lt;/add&gt;
        &lt;/operation&gt;
        &lt;operation&gt;
            &lt;search&gt;
                &lt;![CDATA[
                    return $link;
                ]]&gt;
            &lt;/search&gt;
            &lt;add position=&quot;after&quot; offset=&quot;2&quot;&gt;
                &lt;![CDATA[
                    public function getURL($route) {
                            if( count($this-&gt;url_list) &gt; 0) {
                                 foreach ($this-&gt;url_list as $key =&gt; $value) {
                                    if($route == $key) {
                                        return '/'.$value;
                                    }
                                 }
                            }
                            return false;
                    }
                    public function setURL($_route) {
                            if( count($this-&gt;url_list) &gt; 0 ){
                                 foreach ($this-&gt;url_list as $key =&gt; $value) {
                                    if($_route == $value) {
                                        return $key;
                                    }
                                 }
                            }
                            return false;
                    }
                ]]&gt;
            &lt;/add&gt;
        &lt;/operation&gt;
    &lt;/file&gt;
&lt;/modification&gt;
 in <b>/services2/webpages/i/c/meusite.com.br/public/admin/controller/extension/modification_editor.php</b> on line <b>181</b><b>Warning</b>: Cannot modify header information - headers already sent by (output started at /services2/webpages/i/c/meusite.com.br/public/admin/index.php:80) in <b>/services2/webpages/i/c/meusite.com.br/public/admin/controller/extension/modification_editor.php</b> on line <b>181</b>
periscuelo commented 9 years ago

E quando se edita o arquivo pelo editor os acentos não aparecem como deveriam embora quando grava mante o acento correto caso eu coloque algum via editor.

erro3

periscuelo commented 9 years ago

Só que tem um porém Vidal, (tirando o erro do filesize() que também ocorre no localhost) esses erros só ocorreram porque o site está hospedado no servidor do terra. No meu localhost os outros não ocorrem. O terra é todo engessado. Será que é alguma configuração que tenho de habilitar no htaccess para resolver isso? Obrigado pela atenção.

v5mvidal commented 9 years ago

Primeiramente, muito obrigado pelo feedback. :)

Realmente só testei nas seguintes estruturas: Windows + Apache e Linux + Apache.

Qual a configuração de sua hospedagem no Terra? E qual a saída charset do seu banco de dados MySQL?

periscuelo commented 9 years ago

Então, é um servidor hibrido horroroso do terra que nem phpinfo deixa utilizar. Roda Asp e PHP portanto presumo que seja Windows + IIS. Charset do servidor: UTF-8 Unicode (utf8) e o Collation tá utf8_general_ci. Tive problemas pra fazer o opencart rodar nele, mas através do htaccess do próprio opencart, habilitei umas flags a mais e tá tudo ok. Mas toda vez que se usa um editor de texto ele escapa todas as aspas. Tá complicado aqui. :-(

periscuelo commented 9 years ago

Consegui fazer ao menos parar com os erros de json e scape de aspas. No arquivo admin/view/template/common/header.tpl Mudei a linha

<script type="text/javascript" src="<?php echo $script; ?>"></script>

para

<script type="text/javascript" src="<?php echo $script; ?>" charset="utf-8"></script>

Pesquisei e vi que o ace editor pode dar algum piriquipaque neste sentido. Mas o erro do utf8 que não mostra o acento certinho e também erro do filesize() como te mostrei ainda permanece. Tem idéia do que possa ser?

periscuelo commented 9 years ago

O erro JSON ocorria porque o register globals on estava ativado no servidor. Corrigi desabilitando via .htaccess

O Warning eu resolvi modificando a linha 180 no admin/controller/extension/modification_editor.php de header('Content-Length: ' . filesize($content));

para header('Content-Length: ' . @filesize($content));

Visto que meu servidor mostra warnings, acaba criando dentro do arquivo aquele problema

E para os acentos lá em admin/model/extension/modification_editor.php modifiquei a linha 6 de return $query->row;

para return array_map('utf8_decode', $query->row);

Obrigado.