我正在为在共享主机中运行的客户端编写 PHP CLI 脚本。它使用一个简单的函数记录到一个文件,例如:
function log_entry($msg) {
    global $log_file, $log_handle;
    $msg =  "[".date('Y-m-d H:i:s')."] ".$msg."\n";
    echo $msg;
    $log_handle = fopen($log_file, 'a');
    fwrite($log_handle, $msg);
}
我得到这个错误:
PHP Warning:  fopen(./logs/sync.20130410.log) 
[<a href='function.fopen'>function.fopen</a>]: failed to open stream: 
Too many open files in ./functions.php on line 61
我认为使用相同的句柄存在问题,所以我将其更改为:
function log_entry($msg) {
    global $log_file;
    $msg =  "[".date('Y-m-d H:i:s')."] ".$msg."\n";
    echo $msg;
    $log_handle = fopen($log_file, 'a');
    fwrite($log_handle, $msg);
    fclose($log_handle);
}
但这没有用。我总是在同一日志行中收到错误。当我这样做时,ulimit -n我得到 1024,但这应该不是问题,因为我从不打开多个文件。想法?