4 мар. 2015 г.

Выключить отображение php ошибок на сайте:

# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

Включить отображение php ошибок на сайте:

php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2047

Вывод ошибок php в произвольный лог файл

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

Защищаем папку с логами от доступа

# prevent access to PHP error log
<Files PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Выставляем уровень вывода ошибок

integer — флаг, который задает глубину вывода ошибок. 0 — не выводить ничего, 8191- выводить в лог все. Значение 1 — выводит ошибки. Более подробное описение в документации по PHP.
# general directive for setting php error level
php_value error_reporting integer

Выставляем максимальный размер для строки с ошибкой

# general directive for setting max error size
log_errors_max_len integer

Отключить логирование повторяющихся ошибок

# disable repeated error logging
php_flag ignore_repeated_errors on
php_flag ignore_repeated_source on

Настройки для сайта в рабочем режиме

# PHP error handling for production servers
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_reporting -1
php_value log_errors_max_len 0

<Files /home/path/public_html/domain/PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Конфигурация для отладки или разработки

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/PHP_errors.log
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1
php_value log_errors_max_len 0

<Files /home/path/public_html/domain/PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Настройка аутентификации в apache

E-mail Печать PDF
Если хочется закрыть какую либо часть сайта от любопытных глаз, самым простым способом будет настроить аутентификацию в Apache 2.2: basic или digest либо по IP адресам. Разница между basic и digest аутентификацией в том что basic отправляет пароли открытым текстом, digest же отправляет хэши паролей. Digest метод предпочтительней, так как безопасней. Пароли будем хранить в файле в зашифрованном виде.
Настройка аутентификации basic
Вписываем в описание виртуального хоста, или директории сайта, либо создаем файл .htaccess в нужной директории сайта:
AuthType basic
AuthName "private area"
AuthUserFile /usr/local/www/etc/.htpasswd
Require valid-user
Создаем директорию в которой разместим файл для аутентификации.
mkdir /usr/local/www/etc
Создадим файл .htpasswd который будет хранить имена пользователей и пароли:
#cd /usr/local/www/etc
#htpasswd -c .htpasswd user
И введем пароль для пользователя user.
Сделаем этот файл принадлежащим веб серверу и запретим чтение для остальных пользователей:
#chown www:www .htpasswd
#chmod 640 .htpasswd
Поменять пароль или добавить нового пользователя можно с помощью команды:
#htpasswd .htpasswd user
Для удаления пользователя можно использовать
#htpasswd -D .htpasswd user
Настройка аутентификации digest
Вписываем в описание виртуального хоста, или директории сайта, либо создаем файл .htaccess в нужной директории сайта:
AuthType Digest
AuthName "private"
AuthDigestDomain /private/ http://example.com/private/
AuthDigestProvider file
AuthUserFile /usr/local/www/etc/.htdigest
Require valid-user
Создаем директорию в которой разместим файл для аутентификации.
#mkdir /usr/local/www/etc
Создадим файл .htdigest который будет хранить имена пользователей и пароли:
#cd /usr/local/www/etc
#htdigest -c .htdigest private user
И введем пароль для пользователя user. Обратите внимание на private в команде, это значение должно совпадать со значением в AuthName «private». Сделаем этот файл принадлежащим веб серверу и запретим чтение для остальных пользователей:
#chown www:www .htdigest
#chmod 640 .htdigest
Поменять пароль или добавить нового пользователя можно с помощью команды:
#htdigest .htdigest private user
Для удаления пользователя можно использовать
#htdigest -D .htdigest private user
Еще один способ ограничения доступа - это указать с каким IP-адресов можно попадать в директорию, например вот так:
Order deny,allow
Deny from all
Allow from 192.168.1.1
Мы запрещаем доступ всем разрешив только с нашего IP-адреса (можно перечислить IP-адреса через пробел, или указывать сети, например так
192.168.1.0/24). Директива Order задает порядок проверки, То есть сначала
блокируем всех а потом разрешаем избранным.