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

Проблема с нечетными разрешениями с php-fpm, session_start не удалось на некоторых, но работает на других

Хорошо, у меня установлен php-fpm / apache / apc на ubuntu 12.04 с веб-сайтом, на котором работает корзина покупок php.

Я получаю наводнения с ошибками разрешений, такими как «Не удалось записать данные сеанса (файлы). Убедитесь, что текущая настройка session.save_path верна» или «Предупреждение PHP: session_start () ..... не удалось: разрешение отклонено (13 ) в ..."

И я заметил интересную проблему в папке sessionsdata, которая может указывать на то, что происходит. Вот ls -la папки sessionsdata

    -rw-rw-r--   1 www-data phpsite     816 Aug 29 16:32 sess_r9tfvubu6stg6v918qp4b7tcg0
    -rw-rw-r--   1 phpsite  phpsite     816 Aug 29 16:32 sess_t99844p7rk6ldk548lplupv485
    -rw-rw-r--   1 www-data phpsite     864 Aug 29 16:30 sess_tdh221j4p6o3pvupc965h6pl56
    -rw-rw-r--   1 www-data phpsite     816 Aug 29 16:31 sess_tdtpp6he2quk7651tsekrhulr5

Теперь в моем файле apache /etc/apache2/conf.d/php5-fpm у меня есть

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>

    <FilesMatch ".+\.phps$">
        SetHandler application/x-httpd-php-source
        Order Deny,Allow
        Deny from all
    </FilesMatch>


    <FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
        Order Deny,Allow
        Deny from all
    </FilesMatch>

    Action application/x-httpd-php /fcgi-bin/php5-fpm virtual
    Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm

    <Location /fcgi-bin/php5-fpm>
      Order Deny,Allow
      Deny from All
      Allow from env=REDIRECT_STATUS
    </Location>

    FastCgiExternalServer /fcgi-bin-php5-fpm  -appConnTimeout 10 -idle-timeout 300 -socket /tmp/php5-fpm.sock -pass-header Authorization

И в моем файле виртуального хоста у меня есть

    <IfModule mod_fastcgi.c>
    Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm-phpsite
    FastCgiExternalServer /fcgi-bin-php5-fpm-phpsite -appConnTimeout 10 -idle-timeout 300 -socket /tmp/php5-fpm-phpsite.sock -pass-header Authorization
    </IfModule>

И, наконец, мой файл пула phpsite у меня есть

    [phpsite]
    user = phpsite
    group = phpsite
    listen.owner = phpsite
    listen.group = phpsite
    listen = /tmp/php5-fpm-phpsite.sock

и разрешения для папки с данными сеансов

    drw-rwSr--+  2 phpsite  phpsite 2514944 Aug 29 16:46 .

Я не могу понять, почему некоторые сеансы написаны с владением www-data: phpsite, а другие - с владением phpsite: phpsite ...

Я знаю, что мои разрешения каким-то образом испорчены, но я не вижу, что в них не так. Я также получаю ошибку разрешений fopen на сайте!

Кто-нибудь может мне помочь? Джон

Пользователь phpsite может только обновлять существующие сеансы - он не может создавать новые - chmod u + x yoursessiondatadirectory - похоже, у вас также есть PHP, работающий как модуль в Apache.

На самом деле нет веских причин для запуска производственной системы с Apache + php-fpm: используйте mod_php (и MPM до форка) с Apache. Если вы используете nginx, G-Wan, Lighttpd, используйте php-fpm.