2012-01-27 14 views
6

Funziona perfettamente su localhost con Xampp, ma quando provo sul mio server (host-ed.net), fopen non può aprire alcun URL, funziona solo per i file senza http.fopen non funziona sul mio server

<?php 
$file="http://www.google.es"; 
$gestor = fopen($file, "r") or die ("Nothing"); 
?> 

Nel mio server con questo codice non mostra nulla. Può essere qualcosa sul php.ini?

EDIT: Nel php.ini: allow_url_fopen = On

EDIT: E 'risolto. Il mio server l'ha disabilitato, ma ora è abilitato. Grazie per le risposte.

risposta

8

fopen non possono aprire qualsiasi URL

Controllare il valore della allow_url_fopen php.ini setting:

var_dump(ini_get('allow_url_fopen')); 

E 'probabilmente falsa. Dovrai parlare con il tuo host web o provare un altro metodo. Mabye CURL è abilitato?

È inoltre necessario controllare i valori error_reporting e display_errors. PHP avrebbe dovuto lamentarsi rumorosamente per non essere in grado di aprire l'URL. Avrai voglia di girarli entrambi durante lo sviluppo del codice, in modo da poter capire cosa c'è di più semplice.

+0

Scusa, ho dimenticato di scriverlo ... va bene. allow_url_fopen = On – Fischer

+0

In tal caso, dovrai controllare il tuo livello di segnalazione degli errori e assicurarti che gli errori possano essere visualizzati. PHP può quindi dirti cosa sta veramente andando storto. – Charles

2

L'autorizzazione per l'apertura delle URL con fopen è controllato dal php.ini impostazione allow_url_fopen. Puoi vedere le impostazioni correnti usando phpinfo() che scaricherà un documento html contenente tutte le impostazioni del tuo server.

0

Come http://php.net/manual/en/function.fopen.php stati,

Se il nome del file è del tipo "schema: // ...", si presume di essere un URL e PHP cercherà un gestore di protocollo (noto anche come involucro) per quello schema. Se non vengono registrati wrapper per quel protocollo, PHP emetterà un avviso per aiutarti a tenere traccia dei potenziali problemi nello script e poi continuerà come se il nomefile specificasse un file regolare.

Suppongo quindi che non vi sia alcuna registrazione registrata per url, e php lo tratti come un nome file regolare, che non esiste.

0

Prova Curl, funzionerà se è installato su quel server web.

0

Hai un account di hosting gratuito? La maggior parte dei servizi di hosting limitano la connessione in uscita per gli account gratuiti per prevenire gli abusi. Prova questo:

$fp = fsockopen("some.alive.site", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    echo "Everything is OK"; 
    fclose($fp); 
} 

Se viene visualizzato un messaggio di errore, non è possibile effettuare connessioni in uscita.

0

Se si utilizza PHP-FPM, controllare anche i file di configurazione in pool.d/.I pool PHP-FPM possono sovrascrivere le impostazioni di php utilizzando php_admin_flag, php_admin_value, php_flag o php_value. (Ci siamo imbattuti in una Ubuntu 16 vps)

Problemi correlati