我已将我的代码从一台WAMP计算机移动到另一台,并且运行pdftk的代码停止工作。我已经比较了pdftk.exe的权限,它们在两台机器上都是相同的。当我从命令提示符运行相同的命令时,它可以工作。我将exec("whoami")
添加到脚本中,两台计算机上的用户是相同的。当我运行类似exec('dir 2>&1', $out)
的东西时,它执行所以我知道exec在php中正在运行。
我创建了一个简单的php文件进行测试,但它不起作用。
<?php
$String = 'pdftk.exe > "c:\temp\temp.txt"';
exec("$String");
exec("pdftk.exe > \"c:\temp\temp.txt\"");
?>
两个exec命令都会导致创建一个0字节的文件。
如果我跑
pdftk.exe > "c:\temp\temp.txt"
从命令行将pdftk.exe的输出按预期放入temp.txt文件中。
这似乎是某种权限问题,但可执行文件的权限似乎是相同的。我不记得了。
答案 0 :(得分:0)
在我看来,第一行应该是:
<?php
$String = 'pdftk.exe > "c:\temp\temp.txt"';
exec($String); //removed quotes
?>
对于第二行,如果你试试这个怎么办?
<?php
exec('pdftk.exe > "c:\temp\temp.txt\"', $outputAndErrors, $returnValue);
var_dump($outputAndErrors);
?>
或者,如果您删除了第一个&#34; &gt; &#34;?
<?php
exec('pdftk.exe "c:\temp\temp.txt\" 2>&1', $outputAndErrors, $returnValue);
var_dump($outputAndErrors);
?>
这些是一些可能对你有所帮助的测试。