У меня есть эта команда:
exec(sprintf('%s %s dump_data output', escapeshellarg($apps . 'pdftk' . DIRECTORY_SEPARATOR . 'pdftk.exe'), escapeshellarg(self::winEscapeShellArgFix($file, array()))), $output);
результат sprintf таков:
"\\127.0.0.1\binary\win32\pdftk\pdftk.exe" "//127.0.0.1/uploads\1-16knje01g1drjagii61j3515a94.pdf" dump_data output
запуск этой команды из exec не даст результата, но если я запусту ее из windowsCMD это будет работать правильно.После того, как я попробовал миллионы команд, я понял, что проблема в том, что php использует в качестве escape-обратной косой черты обратный слеш внутри вывода sprintf:
**\\**127......
Кто-нибудь знает, почему это происходит?У меня есть вся магия ВЫКЛ.
РЕДАКТИРОВАТЬ: , если я выполню:
exec("\\127.0.0.1\binary\win32\pdftk\pdftk.exe //127.0.0.1/uploads\1-16knje01g1drjagii61j3515a94.pdf dump_data output",$outarr);
или
exec('\\127.0.0.1\binary\win32\pdftk\pdftk.exe //127.0.0.1/uploads\1-16knje01g1drjagii61j3515a94.pdf dump_data output',$outarr);
это не будет работать
EDIT2: Я отлаживаю, и это не проблема сброса, команда на самом деле хороша, кажется, что это проблема exec, которая не возвращает результат.он работает на веб-сервере iis, но не работает на другом веб-сервере iis.