2011-11-22 35 views
0

我有一個腳本,用readfile()讀取一個mp3文件(我也試過fread()和一個循環)。在一個特定的文件中,我收到了500錯誤。所有其他文件似乎讀得很好。用PHP讀取文件給出了500錯誤

當我檢查我的服務器上的錯誤日誌時,我發現當試圖讀取此特定文件時,我正在收到PHP內存錯誤。

任何人都可以給我一些指示什麼可能會發生?

+0

聽起來像是內存不足 - 文件有多大?你的服務器的內存限制是什麼? – nickb

+0

你可以發佈你想用文件做什麼的代碼?文件有多大?你的memory_limit有多大? – Arend

回答

1

您已經指出了這個問題 - PHP內存不足。 PHP中最大的內存使用量受到ini設置的限制。

您可以在運行時在腳本的頂部ini_set設置:

ini_set('memory_limit', '64M'); 

或者說,它需要對所有腳本效果,你可以將它設置在php.ini文件:

memory_limit = 64M; 

最後,您可以看到正在執行的腳本使用的內存memory_get_usage()

+0

你給出的第二個例子是'.htaccess'文件,而不是php.ini文件。 – Cyclone

+0

對不起。現在修復它。 –

+0

這真的沒有解決我的問題。我做了別的。使用一個名爲smartreadfile.php的腳本,我認爲它以塊的形式讀取文件。無論如何,這是我現在的經歷中最好的格式化答案。 – stoi2m1

0

mp3文件的文件大小大於memory_limit。如果你想從這個mp3文件讀取,你需要增加PHP可以訪問的內存量。

如果您有權訪問php.ini文件,您可以找到memory_limit = 16M ;,並用無論您需要多少內存來替換該值。

如果沒有php.ini文件訪問和你有訪問的.htaccess,添加:

php_value memory_limit 16M

和替換值。

如果您沒有,請嘗試壓縮mp3文件或以其他方式減少執行此操作所需的內存量。嘗試清除未使用的變量並佔用大量內存。

0

那麼,PHP可能會在完成腳本之前內存不足。你可以增加內存php可以通過改變php.ini中的memory_limit選項來運行。

+0

只是一個說明,國際海事組織提出的針對OP的問題更適合評論,而不是答案。 – nickb

+0

你說得對,我會改變它。 – Arend

0

嘗試增加執行時間: set_time_limit(300); // 300秒 ini_set('memory_limit','16M'); //增加到某個值,如16 MB

+0

這改變了時間限制,而不是內存 – Cyclone

0

最有可能超過最大內存。這可以在php.ini中進行調整,請點擊此處: