Перенос на Windows Hosting модуль Image

Аватар пользователя wazzup

разрабатывал сайт на машине c LAMP работало все
как оказалось у заказчика сервер с IIS

вроде многое отладили но так и не работает заливка изображений с помощью модуля Image

в той конфигурации которая сейчас при создании материала типа Image
выводит следующие ругательства:
«Указанный файл galery_items_large_25.jpg не может быть загружен. Разрешены только JPEG, PNG и GIF изображения.
Выбранный файл не удается скопировать, поскольку не найден файл с таким именем. Проверьте правильность указанного имени файла.
»

при этом заливка изображений с помощью IMCE превосходно работает

посоветуйте в какую сторону копать ...

Ключевые слова:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя nyck@drupal.org
nyck@drupal.org 8 лет назад

так JPG или JPEG?
для системы это два разных расширения

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад
nyck@drupal.org написал:
так JPG или JPEG?
для системы это два разных расширения

это строка ошибки из друпала я думаю подразумеваються именно форматы файлов а не расширения...

тем более что с абсолютно такими же настройками под апачем на линуксе все великолепно работает...

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад

посмотрел в переводах

The selected file %file could not be copied, because no file by that name exists. Please check that you supplied the correct filename.
includes/file.inc:241
судя по полученному выводу в %file приходит пустая строка...

первая из
includes/file.inc:681

покопался в file.inc

function file_validate_is_image(&$file) {
  $errors = array();

  $info = image_get_info($file->filepath);
 
 if (!$info || empty($info['extension'])) {
    $errors[] = t('Only JPEG, PNG and GIF images are allowed.');
  }

  return $errors;
}

$errors[] = t('Only JPEG, PNG and GIF images are allowed.');
добавил
$errors[] = $file->filepath;

вывело
«
Указанный файл index5_1_21.jpg не может быть загружен.
Разрешены только JPEG, PNG и GIF изображения.
C:\WINDOWS\Temp\php66.tmp
Выбранный файл C:\Inetpub\sitename не может быть скопирован.
»

грешу на права на запись у папки C:\WINDOWS\Temp\

0 Спасибо
Аватар пользователя nyck@drupal.org
nyck@drupal.org 8 лет назад

можно попробовать переопределить php-шную темп-директорию в одну из директорий домашней папки сайта.
увы, под IIS этого не делал.

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад

у меня доступ есть только к папке с сайтом
так чтопохоже придеться ждать шевелений от админа

под линукс

друпал при установке под линукс

в
http://lindal.ufaline.ru/admin/settings/file-system

параметр Временная папка:
установил в
/var/www/web9/phptmp

под иис я настроил

sites/default/files/temp

но почемуто веравно лезит в папку c:\windows\temp

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад

указал в параметр

Временная папка:
c:/inetpub/sitename/sites/default/files/temp

И заработало
думаю что этот параметр требует указания полного пути

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад

рано обрадовался

заливаешь один файл нормально... следующий нормально
и потом бац и перестает принимат файлы выдает
в духе

«
Указанный файл galery_items_large_67.jpg не может быть загружен. Разрешены только JPEG, PNG и GIF изображения.
»

потом после множества попыток такие принимает один файл и все опять файлы не загружаються. imce приэто работает абсолютно нормально

0 Спасибо
Аватар пользователя wazzup
wazzup 8 лет назад

собака порылась вот здесь

function file_directory_temp() {
  $temporary_directory = variable_get('file_directory_temp', NULL);

  if (is_null($temporary_directory)) {
    $directories = array();

    // Has PHP been set with an upload_tmp_dir?
    if (ini_get('upload_tmp_dir')) {
      $directories[] = ini_get('upload_tmp_dir');
    }

    // Operating system specific dirs.
    if (substr(PHP_OS, 0, 3) == 'WIN') {
      $directories[] = 'c:\\windows\\temp';
      $directories[] = 'c:\\winnt\\temp';
      $path_delimiter = '\\';
    }
    else {
      $directories[] = '/tmp';
      $path_delimiter = '/';
    }

    foreach ($directories as $directory) {
      if (!$temporary_directory && is_dir($directory)) {
        $temporary_directory = $directory;
      }
    }

    // if a directory has been found, use it, otherwise default to 'files/tmp' or 'files\\tmp';
    $temporary_directory = $temporary_directory ? $temporary_directory : file_directory_path() . $path_delimiter .'tmp';
    variable_set('file_directory_temp', $temporary_directory);
  }

и соответственно вопрос

где должно устанавливаться значение file_directory_temp

variable_get('file_directory_temp', NULL);

чтобы не пыталось лезть в с:\windows\temp
это раз

а как временный выход сделал так

$directories[] = 'c:\\windows\\temp';
$directories[] = 'c:\\winnt\\temp';
направил в несуществующие папки дописав к пути в конец по символу 1

и

в
$temporary_directory = $temporary_directory ? $temporary_directory : file_directory_path() . $path_delimiter .'tmp';

tmp заменил на temp что указывало на существующий путь...

вопрос как это настроить по человечески без издевательств над кодом...
а то совсем не улыбаеться править этот кусок каждый раз когда
устанваливешь новую версию

0 Спасибо