2015-01-23 14 views
16

Ho uno script PHP che pubblica il contenuto sulla pagina Facebook di un utente. Funziona tramite un'app Facebook.Errore fatale nell'app Facebook: chiamata a una funzione membro getLongLivedSession() su un oggetto non

quando clicco Autorizza, carica per 10 secondi, ma non pubblica e mostra una pagina vuota con il seguente errore:

exception Failed to connect to 2a03:2880:f01f:2:face:b00c:0:2: Network is unreachable Fatal error: Call to a member function getLongLivedSession() on a non-object in /var/zpanel/hostdata/zadmin/public_html/mysite/thirdparty/networks/facebook/Facebook.php on line 92 

Tutto ha funzionato perfettamente fino a una settimana fa, ma oggi io continuo per ottenere quell'errore Qual è la causa di questo problema?

+0

sto avendo dei problemi, anche. Quando utilizzo gli indirizzi IPv6. Forse una settimana fa avevi ancora un indirizzo IPv4? – jAC

+0

Proverò a forzare il ricciolo solo su ipv4. Grazie per l'input! – GingerGirl

+0

Stesso problema da stamattina. Questo deriva da uno script PHP standalone che usa i metodi di Facebook quindi non è davvero possibile usare curl_setopt. Esiste un'impostazione globale php.ini? PS: non tutte le richieste falliscono. –

risposta

4

Molti server hanno IPv6 abilitato ma non è instradato e in realtà non funziona. Questo si trasforma in un grosso problema quando si sta tentando di accedere a un sito che è pronto per IPv6. Per impostazione predefinita, arricciamento tenterà di connettersi tramite IPv6 e verrà interrotto. Via IPv4 potrebbe funzionare bene, solo se si aggiunge questo:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

Se si verifica questo problema con file_get_contents(), get_headers(), ecc è possibile aggiungere le seguenti righe in /etc/sysctl.conf:

#disable ipv6 
net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1 
net.ipv6.conf.lo.disable_ipv6 = 1 

Or

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 

aggiornamento sulla base di osservazioni:

ipv6 Disattiva in FreeBSD 9

/etc/rc.conf 


ipv6_network_interfaces="none" # Default is auto 

ipv6_activate_all_interfaces="NO" # this is the default 

ip6addrctl_enable="NO" # New way to disable IPv6 support 

ip6addrctl_policy="ipv4_prefer" # Use IPv4 instead of IPv6 

ipv6_activate_all_interfaces="NO" # Do not automatically add IPv6 addresses 
+1

Grazie. Ho visto questa risposta in precedenza. Sto eseguendo FreeBSD quindi questo conf non funziona per me. Vado a controllare come disabilitarlo globalmente per FreeBSD e provarlo. curl_setopt non è un'opzione dal momento che sto usando i metodi di Facebook. –

+0

Se stai usando i metodi di Facebook, vai con l'ultima opzione (Disabilita ipv6 in freebsd 9). –

+0

Ciao. Ho cambiato il file rc.conf e riavviato, ma ho ancora errori. Ho controllato la pagina man di rc.conf e tutto sembra OK. Forse manca un'opzione. BTW ipv6_activate_all_interfaces è specificato due volte nel tuo commento. Sto usando FreeBSD 9.2. –