Я переместил свой код с одного компьютера 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, как и ожидалось.
Кажется, это должно быть какой-то проблемой с разрешениями, но разрешения для исполняемого файла кажутся одинаковыми. Схожу с ума по этому поводу.
На мой взгляд, первая строка должна быть:
<?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);
?>
Или если вы удалите свой первый «>«?
<?php
exec('pdftk.exe "c:\temp\temp.txt\" 2>&1', $outputAndErrors, $returnValue);
var_dump($outputAndErrors);
?>
Вот некоторые тесты, которые могут вам помочь, подумал.
Других решений пока нет …