Поддержка Проблемы и решения validate_file возвращает false вместо true

  • Есть плагин, который в несколько подходов формирует файл (создает через wp_upload_bits файл, пишет через update_option(‘yfym_file_file’, urlencode($upload[‘file’])); путь в бд, потом когда подходит время проверят наличие файла через

    $filename = urldecode(get_option('yfym_file_file'));
    if ((validate_file($filename) === 0)&&(file_exists($filename)))

    наличие файла и производит дозапись.
    Так вот. На более чем 100 сайта все пашет на ура, но попался сайт, который при создании файла в $upload[‘file’] возвращает не такую привычную конструкцию
    /sites/site.ru/wp-content/uploads/2018/06/feed.xml
    а такую
    C:\sites\site.ru/wp-content/uploads/2018/06/feed.xml
    т.е начинается с «C:\sites\»
    в результате чего
    if ((validate_file($filename) === 0) && (file_exists($filename)))
    отдает false, а не true

    Вопрос — как предусмотреть подобные случаи?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • windows хостинг или откуда взялось c:\sites?

    Судя по всему да — либо windows хостинг, либо вообще что-то свое.
    Т.е это результат работы wp_upload_bits (то что лежит в $upload[‘file’]) после создания файла.
    Данные по хостингу уточняю у клиента.

    Проверка DNS-записей домена — утилита dig дала результат

    95.165.128.148
    95-165-128-148.static.spd-mgts.ru
    Т.е. там явно хостинг какой-то необычный. По крайней мере по урл я хостинг не смог определить.

    Вопрос в другом — что блин с этим делать?

    Модератор Yui

    (@fierevere)

    永子

    netname: MGTS-PPPOE
    descr: Moscow Local Telephone Network (OAO MGTS)
    country: RU

    это не хостинг, это домашний компьютер в роли сервера

    на чем именно false — validate_file или file_exists?

    на чем именно false — validate_file или file_exists?

    на validate_file

    Модератор Yuri

    (@yube)

    на validate_file

    Ну так в Кодексе так и написано:

    Return Values
    (2)
    $file is invalid and contains ‘:’ after the first character.

    https://codex.wordpress.org/Function_Reference/validate_file

    Полностью у меня конструкция такая:

    if ((validate_file($filename) === 0)&&(file_exists($filename))) {
    	// файл есть
    	if (!$handle = fopen($filename, $cc)) {
    		error_log('Не могу открыть файл. line 1592', 0);
    		yfym_errors_log('Не могу открыть файл. line 1593');
    	}
    	if (fwrite($handle, $result_yml) === FALSE) {
    		error_log('Не могу произвести запись в файл. line 1596', 0);
    		yfym_errors_log('Не могу произвести запись в файл. line 1597');
    	} else {
    		error_log('Ура! Записали.. line 1599', 0);
    		return true;
    	}
    	fclose($handle);		
    } else { // файла еще нет
    .... код отвечающий за первое создание файла
    } 

    * $cc = ‘w+’ или ‘a’; в зависимости от ситуации

    Я вот думаю, если я выкину нафиг часть условия (validate_file($filename) === 0)
    не вылезут ли глюки у других? все такие плагин установлен сейчас на нескольких сотнях магазинов и не аукнется ли «настройка» под один частный случай глюками?

    Как лучше поступить в моей ситуации?

    • Ответ изменён 5 лет, 9 месяцев назад пользователем icopydoc.
Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «validate_file возвращает false вместо true» закрыта для новых ответов.