Newsgroup: it.comp.www.php
Titolo: in questo script secondo voi dov'è l'errore?

Ciao a tutti, ho inserito in una pagina del mio sito un piccolo script 
trovato in rete e ritoccato da me per leggere i feed RSS di un forum 
esterno fatto con il cms SMF.
<?php
//Percorso file remoto
$remotefile="
http://www.sitoesterno.it/forum/index.php?type=rss&action=.xml
";
//Cartella locale in cui copiare il file
$fileloc="/var/www/vhosts/
miosito.com/httpdocs/rss/forum.xml
";
//apro il file remoto da leggere
$srcfile1 = fopen("$remotefile", "r");
//prelevo il nome del file
$nomefile=basename($remotefile);
//controllo che esista file remoto (es server offline)
if (is_file($remotefile)){
	//apro il file in locale
	if (!($fp1 = fopen($fileloc,"w")));
	//scrivo contenuto del file remoto, ora in temp file, in file locale
	while ($contents = fread( $srcfile1, 8192 )) {
		fwrite( $fp1, $contents, strlen($contents) );
		print strip_tags($contents);
	}
	//chiudo i due files
	fclose($srcfile1);
	fclose($fp1);
	print "ok, feed copiati e aggiornati!";
}else{
	print "impossibile copiare i feed del forum";
}
?>
E' uno script abbastanza semplice che in locale mi funziona 
perfettamente, mentre in remoto mi da problemi. Ho lasciato le righe 
commentate per facilitarvi la comprensione dello script e ho inserito il 
percorso locale come risulta dal provider "/var/www/vhosts etc.etc.", 
quest'ultimo è corretto perchè ho altri script in esecuzione e ne sono 
sicuro.
Quando provo a far partire lo script mi esce la scritta di errore 
"impossibile copiare i feed del forum", il che fa capire che lo script 
non è stato in grado di accedere al file remoto, e quindi la condizione 
if(is_file($remotefile)) è passata all'}else{...
Quale può essere la causa???
Ho pensato a qualche settaggio del file di configurazione del server php 
che mi impedisce di leggere files remoti, è possibile secondo voi??
Come detto, in locale mi funge. L'url degli RSS del sito esterno non è 
letteralmente un file xml, ma ne associa comunque uno, che sia questa la 
causa? Illuminatemi per favore...
Grazie infinite.
Mattia

 Quale può essere la causa???
Dico una fesseria: non puoi togliere il test su is_file e fare semplicemente il
test su fopen() e chissenefrega?
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Batteries not included.

 test su fopen() e chissenefrega?
ho provato eliminando la condizione di is_file e il file generato è 
vuoto, quindi non riesce proprio ad accedere al file remoto. Ho 
controllato le impostazioni del provider e ho allow_url_fopen settato su 
off. Che sia questa la causa? Sto provando a risettarlo con 
ini_set('allow_url_fopen', 'on'); ma non funge. Che ne pensate?

 ini_set('allow_url_fopen', 'on'); ma non funge. Che ne pensate?
http://it2.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
"Note: This setting can only be set in php.ini due to security reasons."
Devi chiede al sysadmin della macchina.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Houston, Tranquillity Base here. The Eagle has landed.
    --Neil Armstrong

Luigi ti ringrazio molto per i suggerimenti, sto sbirciando in rete in 
cerca di una soluzione-alternativa e su alcuni forum suggeriscono di 
usare 'cURL' quando l'ISP pone restrizioni nell'accesso al file php.ini. 
Qualcuno lo ha provato?
Luigi Rosa ha scritto:


Vai di curl e non te ne penti :)
È ottimamente documentato il binding per php, diretatmente nel manuale 
ufficiale

infatti, con curl lo script funge! Che curl! ( ! ) :DD
Spero torni utile a chi ha il mio stesso problema questo link con tutte 
le alternative possibili quando si ha l'allow_url_fopen disabilitato:
http://www.php-mysql-tutorial.com/wikis/php-tutorial/reading-a-remote-file-using-php.aspx
credo sia utile a chiunque vuole implementare feed RSS di siti esterni.
A presto e grazie a tutti per le risposte.
Mattia
Motosauro ha scritto:
