Konwertuj cURL wiersza poleceń na cURL PHP
Nigdy wcześniej nie kręciłem, więc potrzebuję pomocy. Próbowałem to rozpracować na przykładach, ale nie mogę tego ogarnąć!
Mam polecenie curl, które mogę z powodzeniem uruchomić z Linuksa (ubuntu), który umieszcza plik na wiki przez api.
Musiałbym włączyć to polecenie curl w skrypcie PHP, który buduję.
Jak przetłumaczyć to polecenie curl, aby działało w skrypcie PHP?
curl -b cookie.txt -X PUT \
--data-binary "@test.png" \
-H "Content-Type: image/png" \
"http://hostname/@api/deki/pages/=TestPage/files/=test.png" \
-0
Ciasteczko.txt zawiera uwierzytelnianie ale nie mam problemu z umieszczeniem tego w skrypcie, bo to będzie uruchamiane tylko przeze mnie.
@test.png musi być zmienną taką jak $filename
Http://hostname/@api/deki/pages/=TestPage/files/ = musi być zmienna taka jak $pageurl
Dzięki za pomoc.7 answers
Punkt wyjścia:
<?php
$pageurl = "http://hostname/@api/deki/pages/=TestPage/files/=";
$filename = "test.png";
$theurl = $pageurl . $filename;
$ch = curl_init($theurl);
curl_setopt($ch, CURLOPT_COOKIE, ...); // -b
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // -X
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: image/png']); // -H
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // -0
...
?>
Zobacz też: http://www.php.net/manual/en/function.curl-setopt.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 18:03:23
Spróbuj tego:
$cmd='curl -b cookie.txt -X PUT \
--data-binary "@test.png" \
-H "Content-Type: image/png" \
"http://hostname/@api/deki/pages/=TestPage/files/=test.png" \
-0';
exec($cmd,$result);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-22 20:30:47
Whicvhever cURL masz w wierszu poleceń, możesz przekonwertować go do PHP za pomocą tego narzędzia:
https://incarnate.github.io/curl-to-php/
Pomogło mi to po długich godzinach szukania rozwiązania! Mam nadzieję, że to też ci pomoże! Twoje rozwiązanie jest takie:
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://hostname/@api/deki/pages/=TestPage/files/=test.png");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$post = array(
"file" => "@" .realpath("test.png")
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
$headers = array();
$headers[] = "Content-Type: image/png";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 11:20:49
Potrzebujesz ...
Curl-to-PHP: https://incarnate.github.io/curl-to-php /
"Natychmiastowa konwersja poleceń curl do kodu PHP"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-08 23:22:06
Opcja --libcurl została dodana w tym celu, nawet jeśli tworzy program w języku C, myślę, że powinno być dość łatwe do przetłumaczenia na PHP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-22 21:22:49
Używając odpowiedzi MYYN jako punktu wyjścia i tej strony jako odniesienia do wysyłania danych postów za pomocą PHP cURL, oto moja sugestia (pracuję obecnie nad czymś bardzo podobnym):
<?php
$pageurl = "http://hostname/@api/deki/pages/=TestPage/files/=";
$filename = "test.png";
$theurl = $pageurl.$filename;
$ch = curl_init($theurl);
curl_setopt($ch, CURLOPT_COOKIE, ...); // -b
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // -X
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: image/png']); // -H
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // -0
$post = array("$filename"=>"@$filename");
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
?>
Możesz prawdopodobnie zoptymalizować wiele funkcji curl_setopts za pomocą wywołania curl_setopt_array (), jeśli chcesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-10 01:20:41
Lepiej to. W jednej linii.
$cmd='curl -b cookie.txt -X PUT --data-binary "@test.png" -H "Content-Type: image/png" "http://hostname/@api/deki/pages/=TestPage/files/=test.png" -0';
exec($cmd,$result);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 09:02:41