Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

apache

Подписаться на эту метку по RSS

Про apache, 403 forbidden и права доступа

Просмотров: 2584Комментарии: 0
Alib.spb.ru

Это одновременно пост для памяти и шпаргалка.

Бывает так: делаешь сайт, переносишь его на хостинг, а там ррраз - 403я ошибка “Forbidden”.

Что это значит? А то, что веб-сервер не может получить доступ к какому-то нужному файлу. Дальше возможно 2 варианта.

  1. нет доступа к файлу на уровне ОС. Многие хостинг-провайдеры при заливке файла ставят ему минимальные права (запись и чтение только для владельца + настройки ftp так, что владельцем становится текущий пользователь).
    Лечится достаточно просто: на нужный файл выставляются права на чтение для группы и для всех (если надо, чтобы файл был “виден” в Интернет).

  2. нет доступа на уровне ограничений веб-сервера apache. Напомню, что доступ на уровне веб-сервера регулируется файлами .htaccess. Там прописывается, что веб-серверу можно, что - нельзя смотреть. Если (внезапно) нет доступа к чему-то, то есть смысл посмотреть на то, что написано в .htaccess. Если его нет в текущей директории - есть смысл посмотреть .htaccess в директориях выше по иерархии.

Комбинацией этих вариантов является ситуация, при которой в .htaccess все написано верно, но доступ к самому .htaccess ограничен на уровне ФС.

Поэтому с некоторых пор я, если получаю 403ю, первым дело проверяю права на .htaccess.

Для памяти: как лечить Apache2 Negotiation: discovered file(s) matching request

Просмотров: 5449Комментарии: 2
Linux

В общем, на новом проекте попытался открыть http://%SITE%/ и http://%SITE%/test

http://%SITE%/ - открывался отлично, при запросе же http://%SITE%/test выдает Premission Denided'.

cat ~/WWW/%SITE%/error.log | tail -20 дал следующее:

[error] [client 127.0.0.1] Negotiation: discovered file(s) matching request: /home/alexander/WWW/%SITE%/www/test (None could be negotiated)., referer: http://SITE/

Как оказалось, не один я такой. В частности, здесь решают похожую проблему (на английском):

http://uommo.blogspot.ru/2013/02/apache2-negotiation-discovered-files.html

Ну а если коротко, и по-русски, то действуем так:

sudo nano -w /etc/apache2/sites-available/%SITE%

Там ищем Options Indexes FollowSymLinks MultiViews

Удаляем MultiViews, то есть строка должна стать Options Indexes FollowSymLinks

Выходим, сохраняемся.

Перегружаем апач: sudo /etc/init.d/apache2 reload

Все. В смысле, заработало :)

Для памяти. Как лечить pcfg_openfile: unable to check htaccess file, ensure it is readable, referer:

Просмотров: 8538Комментарии: 3
Linux

В общем, создавая новый проект, налетел на такую ошибку: pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://site

Причем, не подгружались картинки из /themes/%THEME%/images - то есть выглядело это так: `все работает`, но изображения на странице - отсутствуют.

Лечится достаточно просто.

1) Смотрим лог:

cat ~/WWW/%SITENAME%/error.log | tail -20

Видим в нем следующее безобразие:

[crit] [client 127.0.0.1] (13)Permission denied: /home/alexander/WWW/%SITENAME%/www/themes/ap/images/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://site/

2) Проверяем, что за права на папку

ls -li ~/WWW/%SITENAME%/www/themes/ap/

Получаем что-то типа:

6966642 drwx------ 2 alexander alexander  4096 мая   19 20:40 images

3408302 -rw-r--r-- 1 alexander alexander 15709 мая   19 20:36 index.php

Внимательно рассматривая сию картину, понимаем: читать папку images `никому низя`

3) Меням картин мира

chmod +rx ~/WWW/ap-pavel/www/themes/ap/images/

ls -li ~/WWW/%SITENAME%/www/themes/ap/

Получаем:

6966642 drwxr-xr-x 2 alexander alexander  4096 мая   19 20:40 images

3408302 -rw-r--r-- 1 alexander alexander 15709 мая   19 20:36 index.php

Большой ПС.

Я не разбирался конкретно с тем, нужно ли давать всем +rx, просто сделал - так как локальная машина, доступ к локальным сайтам закрыт на уровне IPTables, сайты повешены на нестандартные порты... и по большому счету - думать, действительно ли нужно запускать скрипты в папке всем, просто не хотелось. На реальном хостинге - скорее всего добавлял бы +rx для группы, и +r для всех.

Linux Mint 16 vs Linux Mint 15

Просмотров: 2738Комментарии: 0
Linux

Поставил Linux Mint 16 (Petra) на домашний неттоп.

И все бы хорошо, но есть несколько "но":

1) Файлы локальных сайтов у меня лежат в домашней директории. Apache 2.4.6 с какого-то перепугу не смог их прочесть (не было доступа для пользователя www-data в директорию пользователя alexander).

Вообще говоря, есть несколько способов решения этой проблемы. Первый, ввести www-data в группу alexander и запускать apache из-под этой группы. Вторй, запускать apache под пользователем alexander, входящего в группу alexander. По идее, так как сайты локальный, и iptables начисто блокирует возможность работы с этими сайтами по локальной сети, то для ленивых второй способ предпочтительнее (минус одно действие).

Итого в файле /etc/apache2/envvars из-под рута вносим правки:

export APACHE_RUN_USER=alexander
export APACHE_RUN_GROUP=alexander

2) От ошибки

PHP Warning: getdate() function.getdate]: It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function спасает явно прописать в /etc/php5/apache2/php.ini (из-под рута), в секции [Date]

date.timezone = Europe/Moscow

И да, не забыть рестартовать апапч:

sudo /etc/init.d/apache2 restart

3) А вот ошибка Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in %file_name% так просто не лечится. Дело в том, что начиная с php 5.5 поддержка базового расширения mysql из php "начинает убираться" - сначала предупреждающими сообщениями, а затем - и полностью.

В принципе, ничего страшного - переписать класс для работы с БД и все.

Для памяти:

/etc/init.d/apache2 -v - версия апача

Во всем остальном - особых отличий не заметил. Все настройки (пользователя и системы) штатно перенеслись (скрипт - архив - облако - скачивание - разархивация) и заработали.

Отдельный вопрос - синхронизация, но про нее как-нибудь позже.

Совсем забыл!!!

Просмотров: 12401Комментарии: 1
Linux

Позор и стыд на мою пока еще не седую голову. Заводил сегодня новый виртуальный хост на своей локальной машине. Как обычно, для такого рода действия воспользовался webmin - хотя и говорят о его небезопасности, но, по моему мнению, если использовать его "в мирных целях" (то есть на локальной десктопной машине) то ничего страшного нет. Так вот, прописав хост, я забыл прописать его в /etc/hosts (чтобы браузер знал, что не надо его в Интернет искать). Получил вполне закономерный результат - браузер пару раз хотел слазать в Интернет, до тех пор, пока я не вспомнил, что надо сделать что-то еще... Слабым оправданием может служить то, что я - типичный пользователь (хотя бы и linux) то есть администрирую систему только тогда, когда это жизненно важно или без этого никак не обойтись.

В общем, коллеги, друзья и просто люди - в процессе настройки apache под linux не забывайте о простых вещах. Таких, как, например, /etc/hosts