Я использую 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
infront команды, никакая ошибка не брошена. Но я пишу в tmp папку, и это является записываемым всем, что я думал?
Я выполняю PDFTK от PHP's exec
команда. Чтобы быть на 100% уверенным, что это не проблема полномочий, я сделал /tmp
владелец папки и группа, чтобы быть www-data
, который является апачским пользователем, но та же ошибка брошена.
Я теперь понятия не имею, что продолжается, я ценю любую справку!
Вы не должны возиться с разрешениями для / 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.
Опять же, надеюсь, это поможет!