Вы здесь

Не создаются картинки-превью (thumbnail) и не работает карта сайта

0
  1. Не создаются превьюшки для нод.
    Заместо них на странице нод - просто пустые картинки. Например, - http://soft-storage.ru/soft/rabota-s-documentami/rabota-s-tekstami/notepad%2B%2B
    Полноразмерные картинки грузятся. Превьюшки должны грузиться в эту папку - "sites/default/files/styles/thumbnail/public/". Ставил различные права (755, 775, 777) для папки 'public' и для идущих до нее. Также менял файл '.htaccess' в папке 'files' и даже удалял его, но это не помогло. Возможно, проблема в хостинге, но как понять в чем именно и что делать?

  2. Не работает карта сайта 'XML sitemap'.
    Вроде как она сама генерируется и ссылки есть

    Но сама карта сайта - пустая. Это можно увидеть на данной странице - http://soft-storage.ru/sitemap.xml. Если инспектировать страницу, то единственная надпись в коде - "xml-stylesheet".

На локалхосте на денвере все работает: и превьюшки грузятся и карта сайта отображается.

Долго искал решение в интернете (в т.ч. и на зарубежных сайтах), но если советы и были, то они не помогали.

Версия Drupal: 
7.x
Вопрос задан 16.11.2015 - 01:03

Я заметил еще такую штуку: у папки 'default' ("sites/default") стоят права 555. Если их поменять на любые другие, то через несколько минут автоматом опять вернет к 555 (это хост или друпал что ли делает?). Но в любом случае, во время того как я выставляю те же права 777 (во время действия тех нескольких минут), ничего не меняется: превьюшки так и не создаются.
Сейчас вот изменилось на 555 после последней попытки:

Это вообще критично, если у папки автоматом меняются права?

Комментарий оставлен 16.11.2015 - 22:51

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

Комментарий оставлен 17.11.2015 - 11:54

Ответы

0

возможно, проблема во владельце дир, смотреть ман ls, chown, не только chmod
с правами 755 все должно функционировать при нормальной настройке

Ответ дан 16.11.2015 - 15:29
0

Смотря, что за сервак ещё. Если криво настроенный редхад какой-нить, то нужно либо ковырять selinux, либо как писали выше - настройка владельца каталога
Если простой шаред, то может быть недоступна для записи временная директория /tmp - в таком случае либо трахать тех поддержку, либо создавать временную директорию внутри проекта, но тогда нужна будет ручная ротация

Ответ дан 16.11.2015 - 18:44

у меня та же беда сегодня случилась. после переезда на впс и настройки ngin + php5-fpm.
файлы грузятся и отображаются - но только когда я сделал 777 на все папки в папке images
а тамбнейлы не создаются. я тоже поставил 777 на все папк в tmp в корне которая указана временной. и потом поставил юзера своего фтпшного на все объекты в tmp не помогло.

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

# cat /etc/nginx/nginx.conf

user  www-data www-data;
worker_processes  1;
worker_priority -20;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    client_max_body_size 12m;
    access_log  off; #/var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    server_names_hash_max_size  1024;
    server_names_hash_bucket_size   128;

    #gzip  on;

    fastcgi_temp_path   /var/cache/nginx/temp/fastcgi;
    proxy_temp_path /var/cache/nginx/temp/proxy;

    charset utf-8;
    index   index.php index.html index.htm;

    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


# cat /etc/nginx/sites-available/tli.co
server {
    listen                  80;
    server_name             tli.co *.tli.co;

    set                 $main_host      'tli.co';

    if ($host != $main_host) {
        rewrite             ^(.*)$              http://$main_host$1     permanent;
        break;
    }

    access_log              /var/log/nginx/tli.co.access.log;
    error_log               /var/log/nginx/tli.co.error.log;

    root                    /var/www/$main_host/www;
    index                   index.php index.html index.htm;

    location ~* ^.+\.(ico|htm|html|txt|jpg|png|gif|css|js)$ {
        access_log          off;
        autoindex           off;
        expires             30d;
        add_header          Cache-Control       'public';
    }

    location / {
        try_files           $uri    $uri/    /index.php?$args;
    }   

    location ~ \.php$ {
        include             /etc/nginx/conf.d/fastcgi_params.conf;

        fastcgi_param       SCRIPT_FILENAME     /var/www/$main_host/www$fastcgi_script_name;
        fastcgi_param       DOCUMENT_ROOT       /var/www/$main_host/www;

        fastcgi_param       PHP_ADMIN_VALUE     upload_tmp_dir=/var/www/$main_host/tmp/upload;
        fastcgi_param       PHP_ADMIN_VALUE     session.save_path=/var/www/$main_host/tmp/sessions;
    }

    location ~ /\. {
    deny                all;
    access_log          off;
    log_not_found       off;
    }
}

хотелось бы понять как настраивать временные папки для доменов, как сделать чтобы не надо было 777 выставлять на папку записи images. и конечно с проблеой топика я не справился на впс. ошибок в отчетах нет.

Комментарий оставлен 16.11.2015 - 21:02

не буду погружать вас в дебри ясновидения. я попробовал поковырять, конфиг, благо тут легче читать чем в терминале.
после неудчных попыток комментирования строк .htaccess я придумал закомментировать секцию location со статикой jpg,png,css. стало работать!!!
так что вывод такой: на впс первым делом проверить права папок, потом конфигурацию проверить и только потом выяснять пользователя папок.
осталось интересным, что тогда вместо этой секции вписать:

location ~* ^.+\.(ico|htm|html|txt|jpg|png|gif|css|js)$ {
    access_log          off;
    autoindex           off;
    expires             30d;
    add_header          Cache-Control       'public';
}

вроде как эта секция ускоряет отдачу файлов. но мне каежется все этитипы создаются друпалом динамически.
я думаю надо сделать проверку если есть статика - отдать, если нет то - отдать на обработку друпалу (сайту) как это сделать?

Комментарий оставлен 16.11.2015 - 21:29

Вот что выдает:

Хотя созданная мною папка 'newtemp' лежит в каталоге, пробовал и с другими названиями и с уже существующими папками, не работает. Если не дает создать, то, я так понимаю, нужно обращаться в тех. поддержку?

Комментарий оставлен 16.11.2015 - 22:26

удалите слеш.
тут слеш воспринимается как рут-директория сервера, а не как корневая папка сайта.
если newtemp лежит в корне сайта, то указать её нужно так:
newtemp

Комментарий оставлен 16.11.2015 - 23:00

Да, без слеша настройки сохраняются. Но все равно ничего не поменялось: поэкспериментировал с названиями папок (указывал путь в различные) и с файлом '.htaccess' - все по старому.

Комментарий оставлен 16.11.2015 - 23:39

При чём тут ftp-user? Код выполняется от имени того юзера от которого работает веб-сервер. Самый простой способ добавить своего юзера в группу веб сервера

Комментарий оставлен 17.11.2015 - 09:21

предоставьте хостеру адрес превью-картинки (путь ведь вы знаете) и попросите их решить проблему с пправами, хтаксесс и т.д.

Комментарий оставлен 18.11.2015 - 01:45
0

Посмотрел по ссылке, предположительно проблема в том, что запрос на картинку "не доходит до drupal-а".
Решение простое, но требует доступа к настройкам nginx. Необходимо исключить папку /sites/default/files/styles/ из location.

location ~* /sites/default/files/styles/ {
    if (!-e $request_filename) {
    rewrite  ^/(.*)$  /index.php?q=$1  last;
    break;
    }
}

Данный код в конфиге обеспечит отдачу запроса к системе, если файлы в папке /sites/default/files/styles/ не обнаружены.
Должно помочь.
Если самому не вариант прописать, попроси support.

Ответ дан 18.11.2015 - 15:09

Написал в службу поддержки. Буду ждать

Комментарий оставлен 19.11.2015 - 00:35
0

Проблема решилась.
1. В настройках своего хостинга по совету тех. поддержки активировал параметр "вкл Apache вместо Nginx для обработки несуществующих статических файлов, ошибки 404". Заработала карта сайта, но превьюшки - по-прежнему нет.
2. Несколько дней назад сбился шрифт (хотя до этого нормально грузился). Менял права различным папкам, перемещал в разные места файл шрифта, и заметил, что работает он при загрузке из корня сайта, но не работает, если его класть внутрь 'sites' и глубже. Значит, дело в правах. Снова поизменял их. но это не помогло. Решил от балды залезть в 'htaccess', расположенный в корне папки 'sites', и увидел там строку 'Deny from all'. Погуглил на эту тему и решил удалить данную строчку. И надо же, это помогло! Превьюшки создались и шрифт снова заработал.

В общем, благодарю всех за содействие!

Ответ дан 22.11.2015 - 14:13
-1

откройте Отчеты - Отчеты о состоянии и найдите строку "Временная папка - недоступно для записи"
откройте Конфигурация - Файловая система и удалите текст временной папки. Друпал обнаружит и подставит временную папку сервера. тогда он сможет работать с файлами и создаст тамбнейлы.
если для вас адрес временной папки принципиален, подставьте свой адрес, например tmp и создайте такую папку в корне сайта и дайте ей права 755. или 777 если у вас хостинг неправильный

Ответ дан 16.11.2015 - 01:39

Лучше, по возможности, где-то выше корня сайта всё же. И может 775, если 755 не будет работать, а 777 на самый крайний случай.

Комментарий оставлен 16.11.2015 - 02:32

В отчетах ничего нет про ошибку загрузки файлов.
Папку tmp в корне сайта создавал - ничего не изменилось. Если оставить поле 'Временная папка' пустым, то после сохранения настроек это поле снова заполнится "/tmp".

Комментарий оставлен 16.11.2015 - 22:46