在我的虛擬主機服務器上,file_get_contents()
功能被禁用。我正在尋找替代品。請幫助函數file_get_contents()有沒有其他選擇?
回答
file_get_contents()函數幾乎執行以下操作:
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
由於file_get_contents()函數是殘疾人,我敢確信上面不會有工作,要麼雖然。
取決於你想讀什麼,在我的經驗主機通常禁用遠程文件讀取,你可能有其他的選擇。如果您嘗試讀取遠程文件(通過網絡,即http等),則可以查看cURL庫函數
您可以打開該文件fopen
,獲取文件的內容,並使用它們?也許cURL對你有用嗎? http://php.net/manual/en/book.curl.php
我假設你正在試圖通過HTTP遠程訪問文件://或ftp://。
從理論上講,有像fread()的替代品,如果一切都失敗了,fsockopen()。 但是,如果供應商擅長他們的工作,那麼他們也會被禁用。
使用PEAR package Compat。這就像使用PHP編碼解決方案正式取代原生PHP函數一樣。
require_once 'PHP/Compat.php';
PHP_Compat::loadFunction('file_get_contents');
或者,如果你不想使用這個類,你可以手動加載它。
require_once 'PHP/Compat/Function/file_put_contents.php';
- compat的所有功能均由
if(!function_exists())
包裹所以它真的失敗保存,如果你的網絡託管商升級服務器功能後。 - 所有函數都可以像原生PHP一樣使用,並且相關常量也可用!
- List of all available functions
最明顯的原因file_get_contents()
被禁止是因爲它加載主存儲器中的整個文件第一。如果您的託管服務商向您分配了非常低的內存限制,則代碼code_burgar可能會造成問題。
作爲一般規則,只有在確定要加載的文件很小時才使用file_get_contents()
(或 - 替換)。通過SplFileObject
,您可以通過一個方便的界面逐行掃描文件。如果你的文件很大,請使用它。
我不需要閱讀url的內容。我只需要執行或觸發網址。對於那個任何其他功能呢? – Rajasekar 2009-11-26 15:51:05
如果你只需要觸發這個url,並且你對這個反應不感興趣,'get_headers($ url)'就足夠了。 – 2009-11-26 16:00:22
如果你正在嘗試做的是觸發一個給定的URL命中,並不需要閱讀,您可以使用捲曲輸出()提供您的虛擬主機有它的服務器上啓用。
文檔here給出呼叫使用捲曲的URL的一個例子。
如果一切都失敗了,總會有cURL。安裝它的可能性很大。
試試這個代碼:
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$content = curl_exec($ch);
curl_close($ch);
一切的位。
function ff_get($f) {
if (!file_exists($f)) { return false; }
$result = @file_get_contents($f);
if ($result) { return $result; }
else {
$handle = @fopen($f, "r");
$contents = @fread($handle, @filesize($f));
@fclose($handle);
if ($contents) { return $contents; }
else if (!function_exists('curl_init')) { return false; }
else {
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_URL, $f);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = @curl_exec($ch);
@curl_close($ch);
if ($output) { return $output; }
else { return false; }}}}
- 1. PHP exec(),shell_exec(),system(),passthrough()函數有沒有其他選擇?
- 2. 對於php 5.1的date_parse函數有沒有其他的選擇?*?
- 3. 有沒有其他選擇JArchitect?
- 4. 硒有沒有其他選擇?
- 5. 有沒有其他選擇syslogd?
- 6. FastSharp有沒有其他選擇?
- 7. stri_replace_all_fixed緩慢的大數據集 - 有沒有其他選擇?
- 8. DXTREME有其他選擇嗎?
- 9. Browserify有其他選擇嗎?
- 10. libinds有其他選擇嗎?
- 11. file_get_contents()函數沒有響應 - PHP
- 12. R:在geom_smooth中使用自定義函數時沒有選擇其他參數
- 13. 有沒有辦法從其他函數調用函數?
- 14. 選擇其他選項後選擇所有數據
- 15. 函數退步選擇變量對所有其他
- 16. 選擇聚合函數和所有其他列
- 17. jQuerys的「模糊」和「焦點」功能有沒有其他選擇?
- 18. OpenGL對我來說太難了,有沒有其他的選擇?
- 19. Silverlight for WinCE7有沒有其他選擇Sleep()?
- 20. 沒有導出成員'ROUTER_DIRECTIVES'。有什麼其他選擇?
- 21. Raphael 2.0.2似乎沒有.animateAlong命令了。有其他選擇嗎?
- 22. 在Chrome中使用toDataURL有沒有其他選擇?
- 23. 不支持PHP的json_decode,有沒有其他的選擇?
- 24. 對於Nearby Connections API有沒有其他選擇?
- 25. Windows Phone中的MPNS有沒有其他選擇?
- 26. 在MySQL中CONCAT()有沒有其他選擇?
- 27. 從UNION中選擇多個表中的相同列有沒有其他選擇?
- 28. MySQL的選擇,其沒有在其他表的具體值
- 29. 如果其他人沒有與單個選項選擇
- 30. ActiveRecord ::關係具有零對象,爲什麼沒有選擇其他數據
此外FREAD()被禁用 – Rajasekar 2009-11-26 15:45:05
我不需要讀取URL的內容。我只需要執行或觸發網址。對於那個任何其他功能呢? – Rajasekar 2009-11-26 15:50:13
正如我在我的回答中寫的,使用cURL打開url。這正是你需要的。 – 2009-11-26 16:06:30