使用PHP读取文件会产生500错误

时间:2011-11-22 00:53:14

标签: php mp3 readfile

我有一个脚本,它用readfile()读取一个mp3文件(我也试过带有循环的fread())。在一个特定的文件上,我收到500错误。所有其他文件看起来都很好。

当我查看服务器上的错误日志时,我注意到在尝试读取此特定文件时出现PHP内存错误。

任何人都可以给我一些关于可能发生的事情的指示吗?

5 个答案:

答案 0 :(得分:1)

你已经指出了问题 - PHP内存不足。 PHP中的最大内存使用量受ini设置的限制。

您可以使用ini_set在脚本顶部的运行时设置它:

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

或者您可以在php.ini文件中进行设置,以便所有脚本生效:

memory_limit = 64M;

最后,您可以看到当前正在执行的脚本使用的内存memory_get_usage()

答案 1 :(得分:0)

mp3文件的文件大小比memory_limit大。如果你想从这个mp3文件中读取,你需要增加PHP可以访问的内存量。

如果您有权访问php.ini文件,则可以找到memory_limit = 16M ;并将该值替换为您需要的大量内存。

如果您没有访问php.ini并且确实有.htaccess访问权限,请添加:

php_value memory_limit 16M

并替换值。

如果您没有,请尝试压缩mp3文件或以其他方式减少执行此操作所需的内存量。尝试清除未使用的变量并占用大量内存。

答案 2 :(得分:0)

嗯,在完成脚本之前,php可能内存不足。您可以通过更改php.ini中的memory_limit选项来增加允许运行的内存。

答案 3 :(得分:0)

尝试增加执行时间: 参数或者set_time_limit(300); // 300秒 函数ini_set( 'memory_limit的', '16M'); //增加到某个值,如16 MB

答案 4 :(得分:0)

最有可能超过最大内存。这可以在php.ini中调整,请点击此处:http://www.php.net/manual/en/ini.core.php#ini.memory-limit