Centos系统Plesk服务器PHP调用PDFTK报错:command not found求助
解决CentOS Plesk环境下PHP调用PDFTK提示"command not found"的问题
核心原因
你通过Composer安装的是PHP封装的PDFTK库(比如mikehaertl/php-pdftk),但该库依赖系统级的pdftk二进制程序,而Plesk环境下PHP的执行PATH未包含pdftk路径,或者系统本身未安装pdftk。
解决步骤
1. 确认系统是否安装pdftk二进制
通过SSH登录服务器,执行以下命令检查:
which pdftk
如果返回类似/usr/bin/pdftk的路径,说明系统已安装,直接跳到步骤3;如果无返回,说明需要先安装pdftk:
- CentOS 7:
sudo yum install pdftk - CentOS 8/9:官方源已移除原pdftk,需安装pdftk-java版本:
sudo dnf install epel-release sudo dnf install pdftk-java
2. 查找pdftk的完整路径
如果系统已安装但which pdftk没返回,或者你是通过Composer局部安装的pdftk二进制,用以下命令全局搜索:
find / -name pdftk 2>/dev/null
常见的路径包括:
- 系统级:
/usr/bin/pdftk、/usr/local/bin/pdftk - Composer局部:
你的项目根目录/vendor/bin/pdftk
3. 在PHP代码中指定pdftk路径
将找到的完整路径填入command参数:
$pdf = new Pdf('form.pdf', [ 'command' => '/usr/bin/pdftk', // 替换成你找到的实际路径 ]); $result = $pdf->fillForm([ 'name'=>'test name', 'email' => 'test email', ]) ->needAppearances() ->saveAs('form_filled.pdf');
4. 权限检查
确保以下权限正常:
- pdftk文件本身有可执行权限:
chmod +x /path/to/pdftk - PHP运行用户(通常是
psacln、apache或nginx)有读写form.pdf和生成文件所在目录的权限
内容的提问来源于stack exchange,提问作者alex62400
相关产品推荐
相关产品推荐

