Fábio BN 17 Denunciar post Postado Março 10, 2015 Oi pessoal. Estou testando uma página modelo da CIELO, e acusa um erro: Fatal error: Cannot instantiate non-existent class: arrayobject in d:\Inetpub\Domains\site.com.br\www\lojaexemplo-php\includes\include.php on line 17 Conteúdo do include.php <?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', true); require 'http://www.site.com.br/lojaexemplo-php/includes/errorHandling.php'; require_once 'http://www.site.com.br/lojaexemplo-php/includes/pedido.php'; require_once 'http://www.site.com.br/lojaexemplo-php/includes/logger.php'; define('VERSAO', "1.1.0"); session_start(); if(!isset($_SESSION["pedidos"])) { $_SESSION["pedidos"] = new ArrayObject(); } // CONSTANTES define("ENDERECO_BASE", "https://qasecommerce.cielo.com.br"); define("ENDERECO", ENDERECO_BASE."/servicos/ecommwsec.do"); define("LOJA", "1006993069"); define("LOJA_CHAVE", "25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3"); define("CIELO", "1001734898"); define("CIELO_CHAVE", "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832"); // Envia requisição function httprequest($paEndereco, $paPost){ $sessao_curl = curl_init(); curl_setopt($sessao_curl, CURLOPT_URL, $paEndereco); curl_setopt($sessao_curl, CURLOPT_FAILONERROR, true); // CURLOPT_SSL_VERIFYPEER // verifica a validade do certificado curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYPEER, true); // CURLOPPT_SSL_VERIFYHOST // verifica se a identidade do servidor bate com aquela informada no certificado curl_setopt($sessao_curl, CURLOPT_SSL_VERIFYHOST, 2); // CURLOPT_SSL_CAINFO // informa a localização do certificado para verificação com o peer curl_setopt($sessao_curl, CURLOPT_CAINFO, getcwd() . "http://www.site.com.br/lojaexemplo-php/pages/ssl/VeriSignClass3PublicPrimaryCertificationAuthority-G5.crt"); curl_setopt($sessao_curl, CURLOPT_SSLVERSION, 3); // CURLOPT_CONNECTTIMEOUT // o tempo em segundos de espera para obter uma conexão curl_setopt($sessao_curl, CURLOPT_CONNECTTIMEOUT, 10); // CURLOPT_TIMEOUT // o tempo máximo em segundos de espera para a execução da requisição (curl_exec) curl_setopt($sessao_curl, CURLOPT_TIMEOUT, 40); // CURLOPT_RETURNTRANSFER // TRUE para curl_exec retornar uma string de resultado em caso de sucesso, ao // invés de imprimir o resultado na tela. Retorna FALSE se há problemas na requisição curl_setopt($sessao_curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($sessao_curl, CURLOPT_POST, true); curl_setopt($sessao_curl, CURLOPT_POSTFIELDS, $paPost ); $resultado = curl_exec($sessao_curl); curl_close($sessao_curl); if ($resultado) { return $resultado; } else { return curl_error($sessao_curl); } } // Monta URL de retorno function ReturnURL() { $pageURL = 'http'; if ($_SERVER["SERVER_PORT"] == 443) // protocolo https { $pageURL .= 's'; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"]. substr($_SERVER["REQUEST_URI"], 0); } // ALTERNATIVA PARA SERVER_NAME -> HOST_HTTP $file = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); $ReturnURL = str_replace($file, "retorno.php", $pageURL); return $ReturnURL; } ?> A Linha 17 do erro tem:$_SESSION["pedidos"] = new ArrayObject(); Abraços! Fábio! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 10, 2015 Qual é a versão do PHP? ArrayObject é da SPL, que só está disponível a partir do PHP 5.3. Veja: http://php.net/manual/pt_BR/spl.installation.php Compartilhar este post Link para o post Compartilhar em outros sites
Fábio BN 17 Denunciar post Postado Março 10, 2015 Aqui no servidor é: PHP Version 4.4.4Como eu faço para substituir esse código? Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Dorian Neto 41 Denunciar post Postado Março 10, 2015 Para substituir o código você terá que ver se o proprietário do código da suporte para a versão 4 do PHP (o que eu dúvido muito, mas muito mesmo!). O que te indico é alterar a versão do PHP no seu servidor para uma mais atual, 5.4 por exemplo. Compartilhar este post Link para o post Compartilhar em outros sites
Fábio BN 17 Denunciar post Postado Março 10, 2015 Ok. Vou pedir para o pessoa proceder a atualização! Obrigado!! Compartilhar este post Link para o post Compartilhar em outros sites
Fábio BN 17 Denunciar post Postado Março 11, 2015 Oi. Agora estou em outro servidor com PHP atualizado, agora dá erro ao acessar o XML. Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error. More information about this error may be available in the server error log. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 11, 2015 Só seguir a orientação da mensagem de erro: More information about this error may be available in the server error log Veja o log de erro do Apache para saber o problema exato Compartilhar este post Link para o post Compartilhar em outros sites
Fábio BN 17 Denunciar post Postado Março 11, 2015 Oi. Eu acho que era erro de URL, mas a parte do ArrayObject funcionou de boa. Mas a Loja virtual em ASP rodou normal ao conectar o certificado, não vou mais precisar do código em PHP.Abraços! Compartilhar este post Link para o post Compartilhar em outros sites