Команда PDFtk не запускается из exec

Я перенес свой код с одного компьютера 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, как и ожидалось.

Похоже, это какая-то проблема с разрешениями, но разрешения на исполняемый файл кажутся одинаковыми. Схожу с ума от этого.


person user3765165    schedule 02.11.2017    source источник


Ответы (1)


На мой взгляд, первая строка должна быть:

<?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);
?>

Вот некоторые тесты, которые могут вам помочь.

person F3L1X79    schedule 14.11.2017