我最近使用 stack 提供的说明安装了 pdftk溢出
我安装了它,并运行命令,whereis pdftk
结果是
/usr/local/bin/pdftk /usr/bin/pdftk
我有 powerpannel 访问权限,我通过它看到 pdftk 实际上存在于该位置
我运行了命令pdftk --version
,没问题
但在 php 中我用
<?php
$command = "pdftk --help";
system("PATH=/usr/local/bin/ && $command",$response);
if ($response===FALSE){
echo 'sorry error occured';
}
else{
echo $response;
}
?>
输出是 127,我使用的版本是 1.41,输出“127”是我无法理解的
有人可以指导我吗?
编辑
实际上,我试图通过填写 pdf 表单来生成动态 pdf,我的密码是
passthru("/usr/local/bin/pdftk hud3.pdf fill_form result.pdf output - flatten");
这没有返回任何内容
尽管语句前的标题会弹出供下载,我按下保存按钮将其保存在本地,但它并没有将其保存在我的硬盘上。尝试调试这种情况,并从 sktack overflow 上已经提出的问题中获得帮助,我想先运行 pdftk。这就是上述 127 情况出现的地方,需要指导
答案1
有几件事。
1) 不要编译自己的 pdftk 并将其粘贴在 /usr/local/bin/ 中。您应该使用软件包。RPMForge 存储库中提供了 pdftk 软件包:
$ yum info pdftk
Loaded plugins: priorities, ps
Available Packages
Name : pdftk
Arch : i686
Version : 1.44
Release : 2.el6.rf
Size : 906 k
Repo : rpmforge
Summary : PDF Tool Kit
URL : http://www.pdfhacks.com/pdftk/
License : GPL
Description : If PDF is electronic paper, then pdftk is an electronic staple-remover,
: hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. Pdftk is a simple
: tool for doing everyday things with PDF documents. Keep one in the top drawer
: of your desktop and use it to:
实际上,如果您的“whereis”返回了您显示的内容,则表明 pdftk 已安装。运行rpm -qa |grep pdftk
。如果您没有得到任何结果,请通过 yum 安装它(查看http://wiki.centos.org/AdditionalResources/Repositories/RPMForge以了解如何将 RPMForge 添加到可用的存储库中)。无论如何,删除您编译的那个。
2) 您system
在 PHP 中的语句是:“PATH=/usr/local/bin/ && pdftk --help”。这将仅将 PATH 设置为 /usr/local/bin,然后pdftk --help
如果在 PATH 中找到它,则执行。返回代码 127 来自 bash,表示它找不到 pdftk(这很奇怪,因为您指定了唯一的 PATH,但这是另一回事)或者“&&”混淆了 PHP 系统函数。无论如何,为什么不直接使用:system("/usr/local/bin/pdftk --help", $response)
?
答案2
该函数system
返回执行命令的状态代码,而不是实际的字符串输出。您可以检查这一页。所以,该值127
是执行命令的退出状态。
要获取文本输出,您需要使用shell_exec。