2017-08-03 74 views
0

因此,我有一臺運行windows的服務器,它運行一個PHP環境來運行博客網站。file_get_contents()PHP函數不能在運行apache的windows服務器上運行

現在下面的代碼使用xampp在我的本地主機上正常運行,但不能在Windows服務器上運行。

$image = get_the_post_thumbnail_url($postId, array(150,150)); 
$ext = pathinfo($image, PATHINFO_EXTENSION); 
$base64 = 'data:image/' . $ext . ';base64,' . base64_encode(file_get_contents($image)); 

的代碼迴路獲取後的縮略圖,並創建一個base64圖像,這是我在模糊的圖像技術使用(就像發生了什麼前兩個圖像on this site

當我回聲出$ext$image變量我得到的數據,但當我回應file_get_contents($image)我什麼都沒有。我可以確認文件確實存在。

echo $ext . ':' . $image; 
echo '<br />' . file_get_contents($image); 

我碰到的建議,allow_url_fopen,但是當我檢查呼應出phpinfo()已啓用

echo phpinfo(); 

PHP版本是5.6,這樣就不會成爲問題,或者。

另外,當我打開窗口服務器的wordpress調試時,我得到這個錯誤:警告:file_get_contents():php_network_getaddresses:getaddrinfo失敗:沒有這樣的主機是已知的。

任何人都知道此preblom的其他潛在原因。 乾杯

enter image description here

+1

「$ image」變量中是否存在有效的url?實際上是否存在該地址的域名?該錯誤通常意味着該URL不存在或無法找到。 –

+0

@JonathanKuhn感謝您的幫助。該圖像確實存在。當我複製圖像變量的輸出並粘貼到我的瀏覽器時,它的工作原理 –

+1

'getaddrinfo'是一個與php無關的系統函數,除了php像許多其他程序一樣使用它。你可以從服務器上ping域名嗎? –

回答

0

OMG所以我想通了。

該windows服務器是一個測試網站,與url https://test.domain.com.au 所以是一個子域。

因此,當我更新我的代碼,以取代在www中的www測試,它的工作原理。

$base64 = 'data:image/' . $ext . ';base64,' . base64_encode(file_get_contents(str_replace('test', 'www', $image))); 

所以即使圖像URL https://test.domain.com.au/blog/wp-content/uploads/2017/03/my-image-150x150.jpg是一個有效的URL,當粘貼到瀏覽器地址欄是顯示圖像時,file_get_contents()功能不喜歡它。

不知道爲什麼這是因爲測試網站是一個活的網站,所以像在互聯網上一樣生活。

我希望這可以幫助別人:)

相關問題