Antonelli 0 Denunciar post Postado Abril 23, 2011 Olá galera, Preciso muito da ajuda de vocês em 2 coisas! 1) Estou criando um site, e preciso fazer uma verificação com o fsockopen, testando em meu próprio PC, consigo fazer a verificação e uso a função normalmente. Porém quando envio para o host do site, não consigo que ela funcione. Dá um erro tal como: Warning: fsockopen() [function.fsockopen]: unable to connect (...) Penso que esta função esteja desabilitada pelo HOST! Em alternativa, vi que há a possibilidade de usar o cURL, isso é correto? Como ficaria a seguinte função, usando o cURL: $serverInfo = array ( 'ip' => 'xxx.xxx.xxx.xxx', 'login' => 'yyy', ); function statusLogin(){ global $serverInfo; $status_login = fsockopen($serverInfo['ip'],$serverInfo['login'],$erroN,$erroSTR, 1.0); @fclose($status_login); return $status_login; } if(statusLogin()){ echo "OK"; }else{ echo "ERRO"; } 2) Estou tentando criar um subdomínio do tipo "site.meudominio.com.br", crio o redirecionamento no cPanel do host, para a pasta que ficará todo esse conteúdo. Porém se eu digitar "www.meudominio.com.br/site" ele também fica acessível. Por quê? Tentei criar fora da pasta "public_html" mas o host não deixa acessível. Tem solução? EXTRA) Alguem sabe resetar aquele "cPanel" de host? Queria que ele "refizesse o cache" pois exclui alguns redirecionamentos e ele continua os fazendo. Desde já agradeço à todos, Obrigado por toda força que sempre me dão. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 23, 2011 O bê-a-bá sobre uso da cURL você pode ver nos exemplos do próprio manual. Quanto ao subdomínio é normal isso ocorrer. Assim como quando você cria um diretório e o acessa via URL adicionando /nomedodiretorio, com subdomínios não é difeente. Ao criar um subdomínio, o cPanel cria um diretótio em public_html igualse você fizesse manualmente. A diferença é que uma instrução de subdomínio é adicionada para que quando uma requisição seja feita via subdominio ela possa ser encontrada no diretório especificado. Você pode, via FTPou FileExplorer do cPanel fuçar nos outros diretórios que não o public_html, mas via URL, salvoa com falhas brutais na programação, você não vai mexer em nada fora dela. E o extra, convém entraremcontato com suporte do host. Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Abril 23, 2011 O bê-a-bá sobre uso da cURL você pode ver nos exemplos do próprio manual. (...) Olá, Obrigado pela resposta! Sei que não é nada legal vir aqui responder, o que pra você, pode ser fácil. Sei, também, que muita gente posta sem ao menos pesquisar. Mas no meu caso, pesquisei, li o manual, fiz tudo. Porém não consegui encontrar o "value" que devo definir ao cURL para que me retorne se a porta "yyy" está ou não sendo usada! Antes de usar o cURL, que não sei, testei o fsockopen e o stream_socket_client, porém ambos retornaram o mesmo erro, me fazendo crer que o host bloqueia esse tipo de pedido. Entrei em contato com eles, e informaram que não há como liberar. Porém preciso que isso seja feito, pois preciso testar se essa porta está sendo usada para colocar um "status" no site. Teria como me ajudar nessa função com o cURL? Me informar se ele faz esse teste para saber sobre o uso da porta, mesmo esta não sendo um site? Sobre o restante, acredito que seja "tudo" problema do HOST! Desde já agradeço, Peço desculpas pela insistência. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 23, 2011 Esquenta não, é meio que um "Modo Autmático" dizer para ir caçar as coisas no manual :P Então, com seu último post ficou confuso. Você quer conectar num URL, ou que determinar essa informação sobre a tal porta? Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Abril 23, 2011 Esquenta não, é meio que um "Modo Autmático" dizer para ir caçar as coisas no manual :P Então, com seu último post ficou confuso. Você quer conectar num URL, ou que determinar essa informação sobre a tal porta? Então, na verdade isso é para um servidor de jogo! E preciso dar um "ping" nas portas 6900, 6121 e 5121, caso elas estejam ocupadas, retorna "ONLINE", caso estam abertas retorna "OFFLINE"! Com uma dessas funções daria certo: $serverInfo = array ( 'ip' => '200.110.230.100', 'login' => '6900', 'char' => '6121', 'map' => '5121' ); function statusLogin(){ global $serverInfo; $login = $serverInfo['ip'] . ":" . $serverInfo['login']; $status_login = fsockopen('208.115.233.104','6900',$erroN,$erroSTR, '1.0'); @fclose($status_login); return $status_login; } function statusChar(){ global $serverInfo; $char = $serverInfo['ip'] . ":" . $serverInfo['char']; $status_char = stream_socket_client($char,$erroN,$erroSTR, 1.0); @fclose($status_char); return $status_char; } if(statusLogin()){ echo "OK"; }else{ echo "ERRO"; } if(statusChar()){ echo "OK"; }else{ echo "ERRO"; } Porém o host não aceita conexões do tipo "socket"! Teria como fazer isso com cURL? EDIT: É, tentei alguns scripts (cURL) prontos que achei, e todos dão a url como "normal", mesmo não existindo! =( Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Abril 24, 2011 Só para constar, consegui resolver o problema dos "sub-domínios"! :lol: O que estava bloqueando era o ".htaccess" que continha uma linha que redirecionava tudo para o "public_html"! Fica a dica para quem estiver com o mesmo problema! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 24, 2011 Cara, eu estava ontem à noite qui no tópico, já ia responder com várias alternativas quando de repente, acabou a força. Mas, tudo acaba bem quando termina bem, que bom que resolveu. Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Abril 24, 2011 Cara, eu estava ontem à noite qui no tópico, já ia responder com várias alternativas quando de repente, acabou a força. Mas, tudo acaba bem quando termina bem, que bom que resolveu. Então... Resolvi só o problema do ".htaccess", o do cURL ainda não! :( Sobre o teste de porta, achei esse script: <?php $url = "http://200.110.230.100"; $ch = curl_init(); if(!$ch){ echo "ERRO 01"; } $teste = curl_setopt($ch, CURLOPT_URL,$url); $teste = curl_setopt ($ch, CURLOPT_PORT , 6900); $teste = curl_setopt ($ch, CURLOPT_TIMEOUT , 5); $teste = curl_exec($ch); echo $teste; ?> Porém não funcionou nem retornou qualquer resultado! Me ajuda em mais essa? Obrigadão cara, desculpe-me pela insistência! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 24, 2011 Então, é que você tem de inverter o lugar da condição. Todas as opções que você passar via curl_setopt() devem vir antes do curl_exec(). Por sua vez o resultado de curl_exec() é que deve ser associado à uma variável, para ser usada ou testada. Uma vez que você atribuiu esse retorno, pode usar curl_close() e seguir com o script. Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Abril 24, 2011 <?php $url = "200.100.100.100"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt ($ch, CURLOPT_PORT , 6900); curl_setopt ($ch, CURLOPT_TIMEOUT , 5); $resposta = curl_exec($ch); echo $resposta; ?> Assim está correto? Isso me retornaria o que? A verdade é que não conheço essa biblioteca! :( Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 27, 2011 Primeiro ativa os alertas de erro, colocando no início do script (após a tag de abertura do PHP, claro): ini_set( 'display_errors', TRUE ); error_reporting( E_ALL | E_STRICT ); Assim, se er algum problema ele não fica escondido. Agora, seu script tá quase tudo certo. Faltou: or die( curl_error() )Em frente à curl_exec(). curl_close()Após curl_exec() Se você rodar e não ver nada, experimente remover a opção de TIMEOUT. às vezes, servidores lerdos podem demorar um pouco para responder. Se ainda assim não der, tente acessar esse IP, seguida porta, no browser manualmente. Só para ter certeza de que nada no script esteja influenciando o resultado. Depois continuamos. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Maio 1, 2011 É... Mas não funcionou! Acho que o cURL só serve para testes "http"! Preciso de uma biblioteca que faça uma espécia de "PING" na porta que eu quero. Se ela estiver ocupada, ele retorna o "ping", caso não, ele dá "esgotado"! Entende? Para que eu possa usar uma verificação desse ping e caso ele retorne "esgotado", imprime "Offline!". Até porquê, se eu tentar acessar as portas que estou tentando, via browser, não vai ter resposta por não ser servidor web. Conhece alguma solução pra isso? EDIT: Acabei de testar o script como mandou... <?php ini_set( 'display_errors', TRUE ); error_reporting( E_ALL | E_STRICT ); $url = "208.115.233.104"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt ($ch, CURLOPT_PORT , 6900); $resposta = curl_exec($ch) or die(curl_error()); curl_close(); echo $resposta; ?> E retornou: ( ! ) Warning: curl_error() expects exactly 1 parameter, 0 given in C:\Users\Toom Santos\Desktop\RAGNAELITE\Visual\TESTES\ping\teste.php on line 11 Call Stack # Time Memory Function Location 1 0.0012 675160 {main}( ) ..\teste.php:0 2 0.3658 677032 curl_error ( ) ..\teste.php:11 E sobre o tal "ping" nada! Já se eu trocar a porta para "80" (web) ele retorna o mesmo erro, porém ele recarrega o site acima da tabela de erro do MySQL! :angry: Por fim, tenho quase certeza que cURL não funciona! Terei que apelar para o host liberar o fsockopen! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 1, 2011 Muita calma nessa hora. Talvez tenha sido falha minha quando citei "o que faltava". curl_error() exige um parâmetro e é isso que o Warning está te mostrando. Esse parâmetro é a variável com o link de recurso gerado por curl_init(), no seu caso, $ch. Arruma isso e veja se $resposta retorna algo. Se não, ainda consigo pensar em duas alternativas. Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Maio 1, 2011 <?php ini_set( 'display_errors', TRUE ); error_reporting( E_ALL | E_STRICT ); $url = "208.115.233.104"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt ($ch, CURLOPT_PORT , 6900); $resposta = curl_exec($ch) or die(curl_error($ch)); curl_close(); echo $resposta; ?> Bom, fiz como mandou e ele me retornou 2 erros! Quando fiz "localhost", ele retornou o seguinte: "Empty reply from server"; Já quando fiz do meu servidor (clique aqui e veja) ele retornou o seguinte: "couldn't connect to host"; Já com o "fsockopen", quando testo "localhost", ele dá o status correto... Até pela linha de comando (conexão SSH com o IP que quero testar), vejo a conexão requisitada pelo PHP sendo aberta! Já quando testo pelo host, dá o seguinte erro: Warning: fsockopen() [function.fsockopen]: unable to connect to 208.115.233.104:6900 (Connection timed out) in /home2/ragnaeli/public_html/fail/teste2.php on line 3 Connection timed out (110)" Alguma dica? PS.: Obrigadão cara, valeu mesmo por toda força que está me dando! Te devo essa e outras... rs Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 1, 2011 Experimenta a segunda alternativa, então: get_headers( 'http://www.ragnaelite.com.br:6900' ); Detalhe é que não pode usar IP, só URL's mesmo. Daí você analisa o índice zero, buscando por um OK. Aqui eu não consegui testar com a porta 6900, deu um Warning já que não pôde ser alcançado. A função retorna FALSE quando falha, mas adicionalmente emite um Warning indesejado então, apesar de não ser o ideal, você pode suprimir o erro com uma arroba antes da função. Eu imagino que dê certo, pois se testar com a porta 80, por exemplo, que é a padrão de navegação via browser, funciona, então... PS.: Obrigadão cara, valeu mesmo por toda força que está me dando! Te devo essa e outras... rs Esquenta não, depois de passo os detalhes da conta via MP e você me faz o DOC. :lol: Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Maio 1, 2011 Experimenta a segunda alternativa, então: get_headers( 'http://www.ragnaelite.com.br:6900' ); Detalhe é que não pode usar IP, só URL's mesmo. Essa alternativa fica inviável, pois as portas que quero testar não são web, e sim utilizadas por um programa UNIX! Teria alguma "segunda alternativa"? Esquenta não, depois de passo os detalhes da conta via MP e você me faz o DOC. :lol: Pode passar mesmo! :P Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 2, 2011 Bom, tem ainda a possibilidade você executar um comando nativo do Sistema Operacional. O Windows não tem nada nativo, mas têm N alternativas, algumas até gratuitas. No Linux eu não tenho muito conhecimento (por enquanto :devil: ) mas acredito que o cara para isso é o tal do NMap. Achei até um artigo bem extenso que parece a primeira vista ser muito bom. Mas agorinha mesmo, pensando com meus botões. Porque fsockopen() não serviu no servidor? Testei de forma similar a sua e, novamente, igual a você, localmente funcionou. Se não funcionar online, seu host desabilitou a função ou limitou ela. A saber, fiz assim fsockopen( $IP, $port, $errno, $errstr, 0.5 ); Você pode ir ajustando, se necessário, o último parâmetro, a fim de aumentar o TIMEOUT se necessário. Associando à uma variável, enquanto testando, apenas de um var_dump() para ver o resultado. Se não funcionar, tente contatar o host e ver o motivo, de repente eles bloquearam por algum motivo e daí sim veremos outras saídas. Se tudo o mais falhar, há a possibilidade de troca de host. Compartilhar este post Link para o post Compartilhar em outros sites
Shwa 0 Denunciar post Postado Maio 2, 2011 a porta 6900 ta ouvindo? acho que nao <?php function knock( $url, $port ) { if ( @$url = fsockopen ($url, $port, $errno, $errstr, 1) ) { fclose($url); return true; } return false; } var_dump( knock( 'ragnaelite.com.br', 80 ) ); // true var_dump( knock( 'ragnaelite.com.br', 6900 ) ); // false Compartilhar este post Link para o post Compartilhar em outros sites
Antonelli 0 Denunciar post Postado Maio 2, 2011 Fiz o que indicaram, abaixo vou postar os resultado do teste com o seguinte script: <?php $IP = "208.115.233.104"; $port ="6900"; $fp = fsockopen( $IP, $port, $errno, $errstr, 0.5 ); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { echo "OK!"; } var_dump($fp); ?> - LOCALHOST, retornou: OK! resource(2, stream) - "REMOTE" HOST, retornou: Warning: fsockopen() [function.fsockopen]: unable to connect to 208.115.233.104:6900 (Connection timed out) in /home2/ragnaeli/public_html/fail/teste2.php on line 5 Connection timed out (110) bool(false) Pensei em talvez um bloqueio a IP's internacionais, mas o host que contratei é nacional... Assim como meu IP! E se consigo com meu IP, tenho que conseguir com o IP do host, correto? -- EDIT: Montei um script pra testar outro IP, que roda a mesma coisa que o meu. Abaixo, os resultados: - LOCALHOST: - "REMOTE" HOST: Clique e veja! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 2, 2011 A porta está "ouvindo" (nunca entendi essa colocação, não faz sentido :lol: ), mas por algummotivo a conexão está sendo impedida. Antonelli, experimente remover a porta, deixando só o primeiro parâmetro da funão e rode no servidor. Como está indo, pode ser que nem sob a porta 80 (padrão) vá funcionar. Se não funcionar, tente em outro host. Tem uns gratuitos internet a fora que ceita de um tudo. Compartilhar este post Link para o post Compartilhar em outros sites