У меня есть внешняя библиотека с кучей исполняемых файлов (DCMTK). Обычно они могут выполняться в интерфейсе командной строки, а вывод иногда отображается в терминале. Я хочу использовать некоторые из них в сценариях PHP, и я смог сделать это с одним.
Основными являются:
// path to the executables.
private static $dcmtk_path = '/usr/local/opt/dcmtk/bin/';
//method to execute the dcmtk executable.
public static function dcmtk_command($command) {
//--logfile dcmlogfile.cfg
echo exec(self::$dcmtk_path . $command); // $outputarray, 2nd arg ?
}
}
// working example that converts a text file to a dcm worklist file
file_put_contents (self::$MWL_PATH . "samplephp.txt", $template); // text file for MWL.
echo '[{"status":"Sent to PATH"}]';
self::dcmtk_command('dump2dcm ' . self::$MWL_PATH . "samplephp.txt " . self::$MWL_PATH . "samplephp.wl");
Я не знаю, даже возможно. Но я загружаю несколько файлов через $ _POST и получаю:
$file_tmp = $files['tmp_name'];
Это сохраняется в пути на сервере:
$success = move_uploaded_file($file_tmp, $upload_path);
, а затем я хочу выполнить другую команду :
self::dcmtk_command('dcmdump ' . $upload_path . $file_name );
// dcmdump +P StudyInstanceUID IM-0001-0004.dcm for specific tag
При выполнении из интерфейса командной строки, который выводит на терминал набор текста (? STDOUT). Что я хочу сделать, так это записать этот вывод в сценарий PHP, чтобы я мог его обработать. Я пробовал несколько вещей, например, использование выходного буфера, массива $ outputarray из команды exe c, et c.
Похоже, это должно быть возможно. Файлы сохраняются на сервере по указанному пути, поэтому они должны находиться по адресу $ upload_path. $ имя_файла. И я не вижу ошибок в консоли / журнале ошибок PHP. На самом деле у меня нет хорошего способа проверить, была ли команда успешной.