Ausführung von Curl mit PHP
Ich versuche, Docverter zu konvertieren, LaTeX/markdown-Dateien in PDF aber ich habe Probleme mit PHP CURL Zugriff auf Docverter über deren API. Ich bin weiß, ich bin nicht ein kompletter idiot b/c bekomme ich diese zu arbeiten, die Anpassung der shell-Skript in diesem Beispiel Docverter und laufen von der Befehlszeile (Mac OSX).
Durch die 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[]=@".$url.$file." \
http://c.docverter.com/convert > ".$output;
exec("$command");
Dieser gibt keine Fehlermeldungen, funktioniert aber nicht. Ist es ein Pfad Problem irgendwo?
UPDATE Basierend auf @John ' s Vorschlag, hier ein Beispiel mit der PHP - curl_exec()
angepasst hier. Leider ist dieser auch nicht funktioniert, aber zumindest gibt es Fehlermeldungen.
$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);
Haben Sie versucht, die
-@Dainis, noch nicht, ich habe
Warum spielst du nicht die curl-Funktionen für PHP, anstatt der exec?
ich würde gerne Verwendung der PHP -
Blick auf die docs für
shell_exec
?-@Dainis, noch nicht, ich habe
exec()
an anderen Dingen zu arbeiten-und gebe zu, ich bin nicht sicher, der Unterschied mit shell_exec()
. Der Grund, warum ich nicht wollen, dass es wie ein shell-Skript ist, weil die Dateinamen und-Pfade ändern wird, also muss ich die Variablen.Warum spielst du nicht die curl-Funktionen für PHP, anstatt der exec?
ich würde gerne Verwendung der PHP -
curl()
ich war einfach nicht sicher, wie zu tun, dass entweder. Ich würde bekommen exec()
arbeiten auf etwas anderes, so das ist, was ich begonnen habe. Könnten Sie eine Antwort mit curl()
?Blick auf die docs für
curl_init
, curl_setopt
, curl_exec
.InformationsquelleAutor tim peterson | 2013-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste ich mein eigenes problem. Es gab zwei Haupt-Probleme mit dem obigen code:
1) Die
$fields
array war falsch formatiert für dieinput_files[]
. Es brauchte eine@/
- und mime-Typ-Deklaration (siehe code unten)2) Die
curl_exec()
Ausgabe (die tatsächlich neu erstellte Datei-Inhalt), die benötigt werden, zurückgegeben und nicht nurtrue/false
ist diese Funktion Standard-Verhalten. Dies wird erreicht, indem die curl-optioncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
(siehe code unten).Voll funktionsfähiges Beispiel
InformationsquelleAutor tim peterson