Исходное сообщение об ошибке
sh: 1: pdftk: не найдено
Это, очевидно, приводит к этот. Это не первый раз, когда я сталкиваюсь с этой проблемой, и я уверен, что это не pdftk или php-pdftk.
Вот предыстория: я разрабатываю веб-приложения с использованием php 5.4 на linuxmint. Потом проект был прекращен. У меня уже есть репозиторий для этого проекта, поэтому я удаляю весь файл. Несколько месяцев спустя я решил написать совершенно новый проект на php 7, если быть точным, 7.3.
Неожиданно пришлось делать новый патч. Тогда это как я получаю pdftk. На терминале я могу играть с pdftk cli, например печатать текущую версию. Но все же веб-сервер сообщает ту же ошибку.
Разъяснения найдены в комментариях:
Я думаю, это связано с разрешением, двоичный файл уже установлен. я могу использовать его через терминал.
Я получаю pdftk через snap, но, к сожалению, у него мало ограничений. Даже в упомянутых статьях рекомендуется установить через оснастку, но, к сожалению, это также вызывает эту проблему.
Теперь pdftk доступен на mint, затем вы можете удалить pdftk через оснастку, а затем установить pdftk напрямую через apt.
apt install pdftk
Если pdftk
можно использовать после входа в систему (как вы говорите, на терминале), то есть несколько вариантов:
Разрешения: убедитесь, что файл имеет правильные разрешения, позволяя каждому выполнить его.
Окружающая среда: когда вы печатаете pdftk
в командной строке интерпретатор (Shell, Bash и т. д.) знает, как искать двоичные файлы в разных местах. Например, он будет смотреть в /usr/bin
. Где это выглядит, установлено в PATH
переменная окружения (см. echo $PATH
). Однако это в вашей пользовательской конфигурации. PHP, работающий на веб-сервере Apache, может не иметь этой среды. Поэтому в вашем коде лучше всего использовать полный путь. Какой путь? Вы можете узнать, запустив which pdftk
в вашем терминале. Указание полного пути в PHP-коде позволит обойти PATH
проблема.
Другие, возможно, соответствующие сообщения в отношении разрешений: