我有一個腳本,用readfile()讀取一個mp3文件(我也試過fread()和一個循環)。在一個特定的文件中,我收到了500錯誤。所有其他文件似乎讀得很好。用PHP讀取文件給出了500錯誤
當我檢查我的服務器上的錯誤日誌時,我發現當試圖讀取此特定文件時,我正在收到PHP內存錯誤。
任何人都可以給我一些指示什麼可能會發生?
我有一個腳本,用readfile()讀取一個mp3文件(我也試過fread()和一個循環)。在一個特定的文件中,我收到了500錯誤。所有其他文件似乎讀得很好。用PHP讀取文件給出了500錯誤
當我檢查我的服務器上的錯誤日誌時,我發現當試圖讀取此特定文件時,我正在收到PHP內存錯誤。
任何人都可以給我一些指示什麼可能會發生?
您已經指出了這個問題 - PHP內存不足。 PHP中最大的內存使用量受到ini設置的限制。
您可以在運行時在腳本的頂部ini_set設置:
ini_set('memory_limit', '64M');
或者說,它需要對所有腳本效果,你可以將它設置在php.ini文件:
memory_limit = 64M;
最後,您可以看到正在執行的腳本使用的內存與memory_get_usage()
mp3文件的文件大小大於memory_limit
。如果你想從這個mp3文件讀取,你需要增加PHP可以訪問的內存量。
如果您有權訪問php.ini文件,您可以找到memory_limit = 16M ;
,並用無論您需要多少內存來替換該值。
如果沒有php.ini文件訪問和你有訪問的.htaccess,添加:
php_value memory_limit 16M
和替換值。
如果您沒有,請嘗試壓縮mp3文件或以其他方式減少執行此操作所需的內存量。嘗試清除未使用的變量並佔用大量內存。
嘗試增加執行時間: set_time_limit(300); // 300秒 ini_set('memory_limit','16M'); //增加到某個值,如16 MB
這改變了時間限制,而不是內存 – Cyclone
最有可能超過最大內存。這可以在php.ini中進行調整,請點擊此處:
聽起來像是內存不足 - 文件有多大?你的服務器的內存限制是什麼? – nickb
你可以發佈你想用文件做什麼的代碼?文件有多大?你的memory_limit有多大? – Arend