我有一个脚本,它用readfile()读取一个mp3文件(我也试过带有循环的fread())。在一个特定的文件上,我收到500错误。所有其他文件看起来都很好。
当我查看服务器上的错误日志时,我注意到在尝试读取此特定文件时出现PHP内存错误。
任何人都可以给我一些关于可能发生的事情的指示吗?
答案 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