У меня есть скрипт PHP, который размещает контент на странице Facebook пользователя. Это работает через приложение Facebook.
Когда я нажимаю Авторизовать, он загружается в течение 10 секунд, он не публикуется и показывает пустую страницу со следующей ошибкой:
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
Все отлично работало до недели назад, но сегодня я продолжаю получать эту ошибку. В чем причина этой проблемы?
На многих серверах включен IPv6, но он не маршрутизируется и фактически не работает. Это превращается в серьезную проблему, когда вы пытаетесь получить доступ к сайту, который готов к IPv6. По умолчанию, curl будет пытаться подключиться через IPv6 и истечет время ожидания. Через IPv4 он может работать просто отлично, только если вы добавите это:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
Если вы столкнулись с этой проблемой file_get_contents()
, get_headers()
и т. д. вы можете добавить следующие строки в /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
Или же
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
Отключить ipv6 в FreeBSD 9
/etc/rc.confipv6_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
Других решений пока нет …