Назад | Перейти на главную страницу

Plesk + Apache + PHP (FastCGI): постоянные проблемы с разрешениями сеанса, конфликты между HTTP / HTTPS

Я только что переместил коллекцию сайтов на совершенно новый сервер, на котором работают Apache 2.2.3, PHP 5.3 и Plesk 10.1.1. У меня проблемы с правами доступа к файлам в сеансах PHP, которые хранятся в /var/lib/php/session.

Изначально я установил такие разрешения для этой папки:

drwxrwx--- 2 apache psacln 8192 Mar 22 23:25 session

Это сработало нормально для HTTP сессий. Файлы сохранялись в этой папке со следующими разрешениями:

-rw------- 1 client1        psacln 0 Mar 22 23:24 sess_507...
-rw------- 1 client2        psacln 0 Mar 22 23:25 sess_8o1...

Проблема, однако, в том, что скрипты PHP, доступ к которым осуществляется через HTTPS, похоже, не запускаются тем же client1 или client2 пользователь. Я удалил файлы в каталоге сеанса и получил доступ к странице входа через HTTPS, чтобы увидеть, как сеансы сохранялись при запуске по этому протоколу:

-rw------- 1 apache         apache 0 Mar 22 23:25 sess_507...

Таким образом, по какой-либо причине сеансы, инициированные клиентами, просматривающими HTTPS, сохранялись apache:apache, а сеансы от HTTP-клиентов сохранялись с someclient:psacln.

Что хочу спросить:

  1. Как я могу избежать этой проблемы с разрешениями сеанса? Когда сеансы создаются через незашифрованный HTTP и клиент посещает HTTPS-часть сайта, отображаются ошибки разрешений, поскольку apache:apache пытается получить доступ к сохранению сеанса, созданному someclient:psacln. Обратное также верно.
    1. Могу ли я изменить пользователя, который запускает HTTPS-сервер Apache, через Plesk или командную строку?
    2. Если нет, могу ли я сохранить сеансы PHP с помощью rw-rw---- разрешения, а затем добавьте apache к psacln группа?
    3. Есть ли другие предложения по решению этой проблемы?

Измените свой /etc/php.ini файл:

session.save_path = "0;0660;/var/lib/php/session"

PHP 5.3.5 mabe сохранит ваш файл сеанса как -rw-r-- если это так, то вам нужно отредактировать свое приложение, вместо этого используйте только код start_session():

usermod(0);
start_session();

тогда он сохранит файлы сеанса с -rw-rw-- разрешение.

Вам также потребуется изменить группу apache на psacln (ваш сервер может работать как apache: apache, потому что некоторые обновления из apache перезаписывают файл конфигурации).

Отредактируйте свой httpd.conf

меняться от:

user = apache
group = apache

Кому:

user = apache
group = psacln

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

Не забудьте перезапустить сервер apache после изменений /etc/init.d/httpd restart

Если вы используете дистрибутив debian, ваша команда демона будет /etc/init.d/apache restart и ваши файлы конфигурации будут внутри синонимичной папки, например /etc/php/apache/php.ini и /etc/apache/httpd.conf или /etc/apache/apache.conf