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

Debian 8 + PHP: / tmp / В доступе отказано

У меня был веб-сайт, работающий нормально на Debian 7 + PHP 5.6, и недавно я решил обновить свою установку Debian до Debian 8. Все прошло нормально, за исключением небольшого штриха.

При запуске того же кода кажется, что PHP не может ничего записать в /tmp/, теперь я получаю такие сообщения:

errno: 2,
errstr: "ZipArchive::extractTo(): Permission denied",
errcontext: {
    Filepath: "/tmp/phpVTUxDh",
    Options: null,
    Zip: {
       status: 0,
       statusSys: 0,
       numFiles: 12,
       filename: "/tmp/phpVTUxDh",
       comment: ""
    },
Status: true

Видимо метод extractTo() трудно писать \tmp есть ли какие-либо особые изменения в системе, которые могут вызвать это? Что насчет нового systemd PrivateTmp вещь?

Я пытался добавить PrivateTmp=false в файлы:

/etc/systemd/system/multi-user.target.wants/lighttpd.service
/etc/systemd/system/multi-user.target.wants/php5-fpm.service

Однако, похоже, здесь нет никакой разницы.

В любом случае, по какой-либо конкретной причине \tmp теперь всегда пусто? Кроме того, где новое расположение tmp?

Спасибо.

Что нужно проверить:

1) Пользователь системы, которого вы запускаете php-fpm так как

2) AppArmor:

cat /sys/module/apparmor/parameters/enabled

если включено:

grep 'DENIED' /var/log/syslog or /var/log/auditd/auditd.log

3) Разрешения на /tmp:

stat /tmp

4) open_basedir в настройках PHP:

su -m <php_user> -c "php -i | grep -i open_basedir"

Кроме того, когда вы изменяете файл модуля systemd, попробуйте сначала его перезагрузить: systemctl daemon-reload а затем перезапустите php-fpm.