Я только что переместил коллекцию сайтов на совершенно новый сервер, на котором работают 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
.
Что хочу спросить:
apache:apache
пытается получить доступ к сохранению сеанса, созданному someclient:psacln
. Обратное также верно. rw-rw----
разрешения, а затем добавьте apache
к psacln
группа?Измените свой /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