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
сейчас всегда пусто? Кроме того, где находится новое местоположение ТМП?
Спасибо.
1 ответ
Некоторые вещи, чтобы проверить:
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
,