2009-11-22 75 views
1

我目前正在爲我的大學電臺在PHP中編寫一個小應用程序。它基本上從狀態頁面(http://www.address.com:8000/status.xsl)獲取監聽者計數並每分鐘將其放入數據庫中。使用file()不會返回任何內容 - PHP

現在腳本似乎運行良好,當它從我的家用機器運行。我沒有任何問題從該狀態頁面獲取信息。但是,當我將它加載到我的共享託管軟件包時,它似乎超時。我曾嘗試在其他網站(如google.com)上使用file(),同時使用域名和IP,並且工作正常。

我真的很困惑,我應該檢查什麼。在php.ini中,我看不到任何具體的file()超時設置參數,並且它與其他網站一起工作,所以我認爲大學會阻止它。但是,如果是這樣的話,爲什麼它會在家裏工作?

任何想法?

謝謝。

回答

1

確保主機不阻止fopen呼叫。

我會嘗試使用curl來獲取遠程網頁,因爲大多數主機都允許它獲取外部網頁。

1

您可能會從cUrl中獲得更多的里程數,它可以完成與您嘗試實現的相同的工作,但是專門爲該工作而設計(也可以加載更多設置)。系統管理員可以將一些限制放在file()函數上,這會阻止您以這種方式使用此函數。

通過瀏覽以<?php phpinfo(); ?>作爲內容的文件來安裝檢查捲曲。

好運

+0

非常感謝。我試過cURL但是我得到了類似的結果。它在我的家用機器上就像一個魅力,但是當上傳到我的共享主機時,它不起作用。奇怪的是,如果我在谷歌或其他網站上使用curl(和文件),它可以正常工作(在共享包和家中)。 是否有可能我的主機以某種方式阻止了連接?唯一值得一提的是,對於我使用過的每種功能,我都使用8000端口。 – Sam 2009-11-23 00:05:07

+0

如果'file()'和cURL都不起作用,您的Web主機可能會阻止超出特定端口範圍的傳出請求。我在過去曾與Godaddy共享主機發生過相同的問題。 – leepowers 2009-11-23 02:15:24

1

你的PHP配置必須有,如果你希望能夠通過URL來獲取文件啓用allow_url_fopen指令。它不能在運行時設置,因此您必須直接編輯文件php.ini

0

大學防火牆阻止訪問HTTP或HTTPS以外的端口是很常見的。所以端口8000可能是問題。

+0

謝謝。我不認爲uni會阻止它,因爲站點在8000上傳輸,我可以使用我從家庭服務器寫入的腳本訪問它。 – Sam 2009-11-23 00:06:12

相關問題