Я использую PDFTK для водяных знаков PDF-файлов с помощью следующей команды:
pdftk /tmp/55180af7c8c88.pdf stamp /tmp/stamp55180af7c95b84.58412952.pdf output /tmp/55180af7c95c81.06110501.pdf
Однако приведенное выше приводит к:
Error: Failed to open output file:
/tmp/55180af7c95c81.06110501.pdf
No output created.
Error: unable to open file for output: /tmp/55180af7c95c81.06110501.pdf
Вышеупомянутая ошибка является странной, потому что PDFTK должен создавать этот выходной файл!
Если я положу sudo
перед командой ошибка не выдается. Но я пишу в папку tmp, и это все, что я думал?
Я запускаю PDFTK из PHP exec
команда. Чтобы быть на 100% уверенным, что это не проблема с разрешениями, я сделал /tmp
владелец папки и группа будут www-data
, который является пользователем apache, но возникает та же ошибка.
Теперь я понятия не имею, что происходит, я ценю любую помощь!
Вы не должны возиться с разрешениями для /tmp
. Это важная часть системы. Я подозреваю, что причина в твоем pdftk
команда не работает, потому что /tmp
неправильно настроен. Чтобы восстановить разрешения на tmp
выполните следующие команды от имени root:
chown root:root /tmp
chmod 1777 /tmp
В результате останутся разрешения и владелец / группа /tmp
выглядит так:
ls -ld /tmp
drwxrwxrwt 6 root root 12288 Mar 29 18:05 /tmp
На основании дальнейшего расследования я подозреваю, что теперь у нас есть /tmp
разобрались, причина того, что pdftk
Ошибка заключается в том, что выходной файл уже существует, но не может быть записан приложением. (Ожидает обновления в комментариях.)
У вас включен selinux? Посмотри на этот предыдущий вопрос и ответ, пожалуйста.
Я редактирую это после вашего любезного комментария о том, что SELinux / AppArmor не актуален. На твоем месте, и это длинный выстрел, Я бы посмотрел на файловую систему, которую вы используете для / tmp. Если это не tmpfs и он почти заполнен, у вас могут возникнуть проблемы, подобные описанной вами. Как вы, наверное, знаете, как только файловая система приближается к заполнению, она позволяет только root писать в нее.
Опять же, надеюсь, это поможет!