Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre de Sousa

Activar Função F OPEN

Recommended Posts

Tenho um problema com o servidor onde tenho hospedado um site.

 

O que acontece é que necessito das funções fopen(); fwrite() e fclose() para criar e gerir arquivos.

Acontece que quando tento trabalhar com elas o meu sistema não funciona. Entrei em contacto com a administração do servidor de hospedagem e eles dizem que as funções estão habilitadas. Andei a fazer algumas pesquisas e descobri que os servidores costumam ter estas funções bloqueadas.

 

O que pergunto é como consigo utilizar estas funções no meu site sabendo que que elas estão habilitadas...

 

Agradeço desde já uma resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que pergunto é como consigo utilizar estas funções no meu site sabendo que que elas estão habilitadas...

 

Se elas estão habilitadas, basta ver a documentação http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://br2.php.net/manual/en/function.fopen.php

 

Um exemplo simples:

/**
* Criamos um novo arquivo chamado arquivo.txt
* Veja no manual as possibilidades para se utilizar no lugar do w+
*/
$fh = fopen( 'arquivo.txt' , 'w+' );

/**
* Verificamos se o arquivo foi criado corretamente
*/
if ( is_resource( $fh ) ){
fwrite( $fh , 'Testando gravação no arquivo' );
fclose( $fh ); //Sempre feche o ponteiro do arquivo
} else {
echo 'Não foi possível criar o arquivo';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro exemplo muito útil (em caso de leitura de arquivos por código):

 

// aqui abre um arquivo tipo .cvs
$abraArq = fopen("logradouros_ss.csv", "r");

Douglas Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas...

 

Mas isso já eu sei. O problema pelo que descobri tem haver com o allow_url_include que está desacticado.

 

medida de segurança para impedir injeção de código malicioso diretamente no seu.

 

até onde eu sei, essa diretiva apenas bloqueia as funcionalidades de include e require para domínios externos.

 

isso quer dizer que ela te protege de meusite.com.br/pagina=http://outrosite.com/codigomal.php, por exemplo

 

inclusões de mesmo domínio continuam permitidas. Funções como fopen, file_get_contents e manipuladores webservices (simpleXML e DOM por exemplo) continuam funcionando normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso já eu sei. O problema pelo que descobri tem haver com o allow_url_include que está desacticado.

 

Não, o fopen não tem absolutamente nada a ver com o allow_url_include e sim com o allow_url_fopen.

 

Se você precisar de um conteúdo externo a sua aplicação, utilize a cURL para recuperar o conteúdo http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Book cURL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é allow_url_include mas sim allow_url_fopen. Fiz confusão ao escrever.

 

Já pedi para habilitarem no painel de administração e estou à espera. Eles dizem que têm esta função disponível.

Tenho então que aguardar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui em São Paulo, chamamos isso de "migué". Desculpinha esfarrapada pra não fazer. Primeiro que isso não é uma função, é uma diretiva, depois que TEM que ter. Faz parte do núcleo do PHP, não é um opcional.

 

Procure na raiz do seu domínio (com cliente FTP) por algum arquivo chamado php.ini ou config.ini e experimente setar a diretiva manualmente (basta escrever allow_url_fopen = true)

 

Não sei se é possível, mas experimente definir via php_flag no .htaccess

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois que TEM que ter. Faz parte do núcleo do PHP, não é um opcional.

 

Não necessariamente, Evandro.

 

Se não for bem utilizada, essa diretiva pode trazer sérios riscos de segurança à aplicação e ao servidor e, por isso, muitos servidores a desabilitam sugerindo o uso da cURL que é segura, livre, thread-safe, compatível com IPv6 e muito rápida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

digo que TEM que ter, no sentido de estar disponível. Não necessariamente habilitada. Já cUrl que é uma extensão, esta sim é opcional até mesmo sua disponibilidade. No servidor do meu irmão, dl() não carrega MySQLi, por exemplo ¬¬

Compartilhar este post


Link para o post
Compartilhar em outros sites

digo que TEM que ter, no sentido de estar disponível. Não necessariamente habilitada.

 

Perfeito, compreendi o ponto.

 

Contudo, os servidores que desativam a diretiva allow_url_fopen irão oferecer a cURL para se conseguir ler o conteúdo externo, então, se não for possível abir com fopen(), cURL com certeza estará disponĩvel.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve,

com cURL seria:

<?php
function curl($url,$header,$cookies,$post){
		$ch = curl_init();
		curl_setopt_array($ch,array(
									CURLOPT_URL => $url,
									CURLOPT_HEADER => $header,
									CURLOPT_COOKIE => $cookies,
									CURLOPT_RETURNTRANSFER => true,
									CURLOPT_FOLLOWLOCATION => true,
									CURLOPT_CUSTOMREQUEST => ($post)?'POST':'GET',
									CURLOPT_POSTFIELDS => $post,
									)
						 );
		return ($r=@curl_exec($ch))?$r:curl_error($ch);
			if(empty($r)) die("Error na conexão com $page");
	}
?>

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.