2012-01-27 29 views
6

Funciona perfectamente en localhost con Xampp, pero cuando lo intento en mi servidor (host-ed.net), fopen no puede abrir ninguna url, solo funciona para archivos sin http.fopen no funciona en mi servidor

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

En mi servidor con este código muestra Nada. Puede ser cualquier cosa en el php.ini?

EDIT: En el php.ini: allow_url_fopen = On

EDIT: Se solucionó. Mi servidor lo tenía deshabilitado, pero ahora está habilitado. Gracias por las respuestas.

Respuesta

8

fopen no pueden abrir cualquier URL

Comprobar el valor de la allow_url_fopen php.ini setting:

var_dump(ini_get('allow_url_fopen')); 

Es probablemente falsa. Deberá hablar con su proveedor de alojamiento web o probar con otro método. Mabye CURL está habilitado?

También debe verificar sus valores error_reporting y display_errors. PHP debería haberse quejado en voz alta por no poder abrir la URL. Querrás convertirlos a ambos mientras desarrollas el código, para que puedas entender lo que va mal más fácilmente.

+0

Lo siento, me olvidé de escribirlo ... está bien. allow_url_fopen = On – Fischer

+0

En ese caso, querrá verificar su nivel de informe de errores y asegurarse de que se puedan mostrar los errores. PHP puede decirle qué está yendo realmente mal. – Charles

2

El permiso para la apertura de URLs con fopen es controlado por el ajuste de php.iniallow_url_fopen. Puede ver su configuración actual usando phpinfo() que arrojará un documento html que contiene todas las configuraciones de su servidor.

0

Como http://php.net/manual/en/function.fopen.php estados,

Si el nombre de archivo es de la forma "esquema: // ...", que se supone que es una URL y PHP buscará un controlador de protocolo (también conocido como envoltorio) para ese esquema. Si no se registran envoltorios para ese protocolo, PHP emitirá un aviso para ayudarlo a rastrear problemas potenciales en su secuencia de comandos y luego continuará como si el nombre de archivo especifica un archivo regular.

Por lo tanto, supongo que no hay ningún envuelto registrado para url, y php lo trata como un nombre de archivo normal, que no existe.

0

Pruebe Curl, funcionará si está instalado en ese servidor web.

0

¿Tiene una cuenta de alojamiento gratuita? La mayoría de los servicios de alojamiento limitan la conexión saliente de cuentas gratuitas para evitar abusos. Pruebe esto:

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

Si ve un mensaje de error, no tiene permitido hacer conexiones salientes.

0

Si está utilizando PHP-FPM, también verifique los archivos de configuración en pool.d/.Los grupos de PHP-FPM pueden anular las configuraciones de php usando php_admin_flag, php_admin_value, php_flag o php_value. (Lo encontramos en Ubuntu 16 vps)

Cuestiones relacionadas