Я перенес свой код с одного компьютера 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, как и ожидалось.
Похоже, это какая-то проблема с разрешениями, но разрешения на исполняемый файл кажутся одинаковыми. Схожу с ума от этого.