我有一个需要将文本写入文件的控制台PHP应用程序。如果文本的大小超过130999字节,则不会写入数据:
$line = '';
for ( $i=0 ; $i<130991 ; $i++ ) {
$line .= 'i';
}
$size = mb_strlen($line, 'utf-8');
$line = "\n" . $size . " " . $line; // Adds another 8 bytes
$logLine = escapeshellarg($line);
echo shell_exec("echo {$logLine} >> data.log}");
怀疑内存限制,我将PHP内存限制从128 MB增加到512 MB,情况没有变化。 可能导致此限制的原因是什么?
修改
更多信息:
$ xargs --show-limits
Your environment variables take up 3126 bytes
POSIX upper limit on argument length (this system): 2091978
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2088852
Size of command buffer we are actually using: 131072
答案 0 :(得分:2)
我怀疑所有命令行shell都有最大命令大小。 Windows 2000上的限制为2047,Windows XP上的限制为8191 [ref]。 Linux可能会有更大的限制,但我认为它不会是无限的。我很确定你刚刚达到系统的限制。
P.S。当PHP达到其内存限制时,您会收到正确的错误消息。