消息:fopen() 期望参数 1 是给定数组的有效路径


Message: fopen() expects parameter 1 to be a valid path, array given

我正在使用库以.ini格式写入文件。

现在这是我的写入函数:

function write($file = NULL, $data = array(), $sections = TRUE) {
    $this->data = (!empty($data)) ? $data : $this->data;
    $this->file = ($file) ? $file : $this->file;
    $this->sections = $sections;
    $content = NULL;
    if ($this->sections) {
        foreach ($this->data as $section => $data) {
            $content .= '[' . $section . ']' . PHP_EOL;
            foreach ($data as $key => $val) {
                if (is_array($val)) {
                    foreach ($val as $v) {
                        $content .= $key . '[] = ' . (is_numeric($v) ? $v : '"' . $v . '"') . PHP_EOL;
                    }
                } elseif (empty($val)) {
                    $content .= $key . ' = ' . PHP_EOL;
                } else {
                    $content .= $key . ' = ' . (is_numeric($val) ? $val : '"' . $val . '"') . PHP_EOL;
                }
            }
            $content .= PHP_EOL;
        }
    } else {
        foreach ($this->data as $key => $val) {
            if (is_array($val)) {
                foreach ($val as $v) {
                    $content .= $key . '[] = ' . (is_numeric($v) ? $v : '"' . $v . '"') . PHP_EOL;
                }
            } elseif (empty($val)) {
                $content .= $key . ' = ' . PHP_EOL;
            } else {
                $content .= $key . ' = ' . (is_numeric($val) ? $val : '"' . $val . '"') . PHP_EOL;
            }
        }
    }
    return (($handle = fopen($this->file, 'w')) && fwrite($handle, trim($content)) && fclose($handle)) ? TRUE : FALSE;
}

写下我的内容,我给文件如下:

                $file = $path.$filename;
                $ini = new INI($file);

                    // Save settings to file
                $ini->write($insert);

在VAR_DUMP($ini)上; 我得到:

object(INI)[76]
  public 'file' => string 'C:/wamp/www/bizrtc/uploads/test1.ini' (length=36)
  public 'data' => 
    array (size=3)
      'INIDetails' => 
        array (size=11)
          'SipUserName' => string '' (length=0)
          'Password' => string '' (length=0)
          'Domain' => string '' (length=0)
          'Proxy' => string '' (length=0)
          'Port' => string '' (length=0)
          'SipAuthName' => string '' (length=0)
          'DisplayName' => string '' (length=0)
          'ServerMode' => string '' (length=0)
          'UCServer' => string '' (length=0)
          'UCUserName' => string '' (length=0)
          'UCPassword' => string '' (length=0)
      'DialPlan' => 
        array (size=3)
          'DP_Exception' => string '' (length=0)
          'DP_Rule1' => string '' (length=0)
          'DP_Rule2' => string '' (length=0)
      'Advanced' => 
        array (size=14)
          'OperationMode' => string '' (length=0)
          'MutePkey' => string '' (length=0)
          'Codec' => string '' (length=0)
          'PTime' => string '' (length=0)
          'AudioMode' => string '' (length=0)
          'SoftwareAEC' => string '' (length=0)
          'EchoTailLength' => string '' (length=0)
          'PlaybackBuffer' => string '' (length=0)
          'CaptureBuffer' => string '' (length=0)
          'JBPrefetchDelay' => string '' (length=0)
          'JBMaxDelay' => string '' (length=0)
          'SipToS' => string '' (length=0)
          'RTPToS' => string '' (length=0)
          'LogLevel' => string '' (length=0)
  public 'sections' => boolean true

错在哪里?我应该怎么做才能让它工作?

如果没有整个类和错误的行号,可能很难猜测。该方法似乎还可以,至少带有 fopen 的部分。对我来说,您的财产似乎已被其他地方覆盖。尝试将其设为私有,看看会发生什么,也许这将帮助您发现问题。