最近因為ipv6怪怪的,所以網頁載入外部資料時會被file_get_contents卡住,導致超時連結。除了可以改用curl之外。
也可以在file_get_contents中加入bindto函數。
自 PHP 5.1.0 起支援 bindto,可用來指定 IP 位址(可以是 IPv4 或 IPv6)和/或 PHP 將用來訪問網路的埠號。語法是 ip:port(若果想讓系統自動選取可以將 IP 或埠號設為 0)。
注: 因 FTP 在標準運行時建立兩個套接字連線,此時不能在 bindto 選項中指定埠號。因此對於 FTP wrapper 只支援一種語法 ip:0。
只使用ipv4讀取
file_get_contents($url, false, stream_context_create(['socket' => ['bindto' => '0:0']]));
只使用ipv6讀取
file_get_contents($url, false, stream_context_create(['socket' => ['bindto' => '[0]:0']]));