Я пытаюсь использовать Docverter для преобразования файлов LaTeX/markdown в PDF, но у меня возникли проблемы с использованием PHP для работы CURL to access Docverter via their API. Я знаю, что я не полный idiot b/c, я могу заставить это работать, адаптируя сценарий оболочки in this Docverter example и работая из командной строки (Mac OSX).Выполнение Curl с PHP
Использование РНР exec()
:
$url=$_SERVER["DOCUMENT_ROOT"];
$file='/markdown.md';
$output= $url.'/markdown_to_pdf.pdf';
$command="curl --form from=markdown \
--form to=pdf \
--form input_files[][email protected]".$url.$file." \
http://c.docverter.com/convert > ".$output;
exec("$command");
Это не дает никаких сообщений об ошибках, но не работает. Есть ли проблема?
UPDATE на основе @ предложению Джона, вот пример использования РНР curl_exec()
адаптировано из here. К сожалению, это также не работает, хотя, по крайней мере, оно дает сообщения об ошибках.
$url = 'http://c.docverter.com/convert';
$fields_string ='';
$fields = array('from' => 'markdown',
'to' => 'pdf',
'input_files[]' => $_SERVER['DOCUMENT_ROOT'].'/markdown.md',
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
Пробовали ли вы 'shell_exec'? – Peon
- @ Dainis, еще нет, я получил 'exec()' для работы над другими вещами и признаю, что не уверен в различии с 'shell_exec()'. Причина, по которой я не хочу запускать сценарий оболочки, заключается в том, что имена файлов и пути меняются, поэтому мне нужны переменные. –
Почему вы не используете функции curl, написанные для PHP вместо exec? –