fopen === false ?

akxxiv

Новичок
Может я что-то где-то пропустил читая документацию, но на локалке все работает, на сервере нет.

PHP:
function create_output_file($data, $file ){
        $fp = fopen($file, 'w');

        if( $fp === false ){
            $this->set_error('Не удалось создать файл '. $file);
            return false;
        }

        foreach ($data as $fields) {
            fputcsv($fp, $fields, ";");
        }
        fclose($fp);
        return true;
    }
Так вот тут в блоке
PHP:
if( $fp === false ){
    $this->set_error('Не удалось создать файл '. $file);
     return false;
}
На локалке он не отрабатывает и файл создается и все здорово. А вот на сервере отрабатывает. Хотя ни каких варнингов не пишется. И более того!!! Если убрать эту проверку, то файл создается нормально. Точнее он так и так создается, но если убрать эту конструкцию то данные записываются в данный файл.
Может при каких-то условиях fopen отдает false даже при успешной операции??? А я просто что-то гдето пропустил и не дочитал?
 

Вурдалак

Продвинутый новичок
Нет, нужно дебажить.

Записываться данные не могут хотя бы по той причине, что fputcsv(false, ...) не имеет смысла.
 

akxxiv

Новичок
Нет, нужно дебажить.

Записываться данные не могут хотя бы по той причине, что fputcsv(false, ...) не имеет смысла.
И тем не менее такая функция:
PHP:
function create_output_file($data, $file ){
        $fp = fopen($file, 'w');

      //  if( $fp === false ){
      //      $this->set_error('Не удалось создать файл '. $file);
      //     return false;
      //  }

        foreach ($data as $fields) {
            fputcsv($fp, $fields, ";");
        }
        fclose($fp);
        return true;
    }
отрабатывает нормально, и файл создает, и данные туда записывает и даже эти данные потом на FTP кидает (но это уже другой метод). Но при этом if( $fp === false ) - отрабатывет
Чудеса блин...
 

Вурдалак

Продвинутый новичок
Тогда сделай оптимизацию. Пиши сразу
PHP:
function create_output_file($data, $file ){
        foreach ($data as $fields) {
            fputcsv(false, $fields, ";");
        }
        return true;
    }
Зачем писать лишний код?
 
Сверху