我从来没有做过任何 curl 之前,所以我需要一些帮助。我试图工作,这从例子,但不能得到我的头周围!
我有一个curl命令,我可以成功地从linux(ubuntu)命令行运行,它通过API将文件放到wiki上。
我需要将此curl命令合并到我正在构建的PHP脚本中。
我如何翻译这个curl命令,使其在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
cookie.txt包含身份验证,但我可以将其以明文形式放在脚本中,因为这将仅由我运行。
@test.png必须是变量,如$filename
http://hostname/@api/deki/pages/=TestPage/files/=必须是变量,如$pageurl
谢谢你的帮助。
9条答案
按热度按时间zf2sa74q1#
起点:
另请参阅:http://www.php.net/manual/en/function.curl-setopt.php
nx7onnlm2#
你需要...
curl到PHP:https://incarnate.github.io/curl-to-php/
h9vpoimq3#
无论命令行中有什么cURL,都可以使用此工具将其转换为PHP:
它帮助我经过长时间长时间的寻找解决方案!希望它也会帮助你!你的解决方案是这样的:
ttisahbt4#
This is an autogenerated list of which curl commandline options might map onto which php CURLOPT_ constant:
| --arg | description | curl_setopt() |
| ------------ | ------------ | ------------ |
|
-a
--append
| Append to target file when uploading |CURLOPT_FTPAPPEND
,CURLOPT_APPEND
||
--basic
| Use HTTP Basic Authentication |CURLAUTH_BASIC
||
--cacert <file>
| CA certificate to verify peer against |CURLE_SSL_CACERT
,CURLE_SSL_CACERT_BADFILE
||
--capath <dir>
| CA directory to verify peer against |CURLOPT_CAPATH
||
-E
--cert <certificate[:password]>
| Client certificate file and password |CURLOPT_SSLCERT
,CURLOPT_SSLCERTPASSWD
,CURLOPT_SSLCERTTYPE
,CURLE_SSL_CACERT
,CURLE_SSL_CERTPROBLEM
,CURLE_SSL_PEER_CERTIFICATE
,CURLE_SSL_CACERT_BADFILE
,CURLOPT_ISSUERCERT
,CURLINFO_CERTINFO
,CURLOPT_CERTINFO
||
--connect-to <HOST1:PORT1:HOST2:PORT2>
| Connect to host |CURLOPT_CONNECT_TO
||
-b
--cookie <data>
| Send cookies from string/file |CURLOPT_COOKIE
,CURLOPT_COOKIEFILE
,CURLOPT_COOKIEJAR
,CURLOPT_COOKIESESSION
,CURL_LOCK_DATA_COOKIE
,CURLINFO_COOKIELIST
,CURLOPT_COOKIELIST
||
--crlf
| Convert LF to CRLF in upload |CURLOPT_CRLF
,CURLOPT_CRLFILE
||
--crlfile <file>
| Get a CRL list in PEM format from the given file |CURLOPT_CRLFILE
||
-d
--data <data>
| HTTP POST data |CURLOPT_READDATA
,CURL_LOCK_DATA_COOKIE
,CURL_LOCK_DATA_DNS
,CURL_LOCK_DATA_SSL_SESSION
||
--delegation <LEVEL>
| GSS-API delegation permission |CURLGSSAPI_DELEGATION_FLAG
,CURLGSSAPI_DELEGATION_POLICY_FLAG
,CURLOPT_GSSAPI_DELEGATION
||
--digest
| Use HTTP Digest Authentication |CURLAUTH_DIGEST
,CURLAUTH_DIGEST_IE
||
--dns-interface <interface>
| Interface to use for DNS requests |CURLOPT_DNS_INTERFACE
||
--dns-servers <addresses>
| DNS server addrs to use |CURLOPT_DNS_SERVERS
||
--engine <name>
| Crypto engine to use |CURLOPT_SSLENGINE
,CURLOPT_SSLENGINE_DEFAULT
,CURLE_SSL_ENGINE_NOTFOUND
,CURLE_SSL_ENGINE_SETFAILED
,CURLINFO_SSL_ENGINES
||
-f
--fail
| Fail silently (no output at all) on HTTP errors |CURLOPT_FAILONERROR
,CURLE_FAILED_INIT
,CURLE_FTP_PORT_FAILED
,CURLE_HTTP_PORT_FAILED
,CURLE_LDAP_SEARCH_FAILED
,CURLE_SSL_ENGINE_SETFAILED
,CURLE_FTP_SSL_FAILED
,CURL_FNMATCHFUNC_FAIL
||
-F
--form <name=content>
| Specify multipart MIME data |CURLE_FTP_WEIRD_227_FORMAT
,CURLE_MALFORMAT_USER
,CURLE_URL_MALFORMAT
,CURLE_URL_MALFORMAT_USER
,CURLM_CALL_MULTI_PERFORM
||
--ftp-account <data>
| Account data string |CURLOPT_FTP_ACCOUNT
||
--ftp-alternative-to-user <command>
| String to replace USER [name] |CURLOPT_FTP_ALTERNATIVE_TO_USER
||
-P
--ftp-port <address>
| Use PORT instead of PASV |CURLE_FTP_PORT_FAILED
||
--ftp-skip-pasv-ip
| Skip the IP address for PASV |CURLOPT_FTP_SKIP_PASV_IP
||
--ftp-ssl-ccc
| Send CCC after authenticating |CURLOPT_FTP_SSL_CCC
||
-G
--get
| Put the post data in the URL and use GET |CURLOPT_HTTPGET
,CURLE_FTP_CANT_GET_HOST
,CURLE_FTP_COULDNT_GET_SIZE
,CURL_RTSPREQ_GET_PARAMETER
||
-I
--head
| Show document info only |CURLOPT_HEADER
,CURLOPT_HEADERFUNCTION
,CURLOPT_HTTPHEADER
,CURLOPT_WRITEHEADER
,CURLINFO_HEADER_OUT
,CURLINFO_HEADER_SIZE
,CURLHEADER_SEPARATE
,CURLHEADER_UNIFIED
,CURLOPT_HEADEROPT
,CURLOPT_PROXYHEADER
||
-H
--header <header/@file>
| Pass custom header(s) to server |CURLOPT_HEADER
,CURLOPT_HEADERFUNCTION
,CURLOPT_HTTPHEADER
,CURLOPT_WRITEHEADER
,CURLINFO_HEADER_OUT
,CURLINFO_HEADER_SIZE
,CURLHEADER_SEPARATE
,CURLHEADER_UNIFIED
,CURLOPT_HEADEROPT
,CURLOPT_PROXYHEADER
||
--http2
| Use HTTP 2 |CURLOPT_HTTP200ALIASES
,CURL_VERSION_HTTP2
||
--ignore-content-length
| Ignore the size of the remote resource |CURLOPT_IGNORE_CONTENT_LENGTH
||
--interface <name>
| Use network INTERFACE (or address) |CURLOPT_INTERFACE
,CURLOPT_DNS_INTERFACE
||
-6
--ipv6
| Resolve names to IPv6 addresses |CURL_VERSION_IPV6
||
--key <key>
| Private key file name |CURLOPT_SSLKEY
,CURLOPT_SSLKEYPASSWD
,CURLOPT_SSLKEYTYPE
,CURLE_SSL_PINNEDPUBKEYNOTMATCH
,CURLOPT_SSH_PRIVATE_KEYFILE
,CURLOPT_SSH_PUBLIC_KEYFILE
,CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
,CURLOPT_KEYPASSWD
,CURLSSH_AUTH_KEYBOARD
,CURLSSH_AUTH_PUBLICKEY
,CURLOPT_PINNEDPUBLICKEY
||
--krb <level>
| Enable Kerberos with security |CURLOPT_KRB4LEVEL
,CURLOPT_KRBLEVEL
||
--local-port <num/range>
| Force use of RANGE for local port numbers |CURLINFO_LOCAL_PORT
||
-L
--location
| Follow redirects |CURLOPT_FOLLOWLOCATION
||
--login-options <options>
| Server login options |CURLOPT_LOGIN_OPTIONS
||
--mail-auth <address>
| Originator address of the original email |CURLOPT_MAIL_AUTH
||
--mail-from <address>
| Mail from this address |CURLOPT_MAIL_FROM
||
--mail-rcpt <address>
| Mail to this address |CURLOPT_MAIL_RCPT
||
--negotiate
| Use HTTP Negotiate (SPNEGO) authentication |CURLAUTH_GSSNEGOTIATE
,CURLAUTH_NEGOTIATE
||
-n
--netrc
| Must read .netrc for user name and password |CURLOPT_NETRC
,CURL_NETRC_IGNORED
,CURL_NETRC_OPTIONAL
,CURL_NETRC_REQUIRED
,CURLOPT_NETRC_FILE
||
--netrc-file <filename>
| Specify FILE for netrc |CURLOPT_NETRC_FILE
||
--netrc-optional
| Use either .netrc or URL |CURL_NETRC_OPTIONAL
||
--noproxy <no-proxy-list>
| List of hosts which do not use proxy |CURLOPT_NOPROXY
||
--ntlm
| Use HTTP NTLM authentication |CURLAUTH_NTLM
,CURLAUTH_NTLM_WB
||
--ntlm-wb
| Use HTTP NTLM authentication with winbind |CURLAUTH_NTLM_WB
||
--oauth2-bearer <token>
| OAuth 2 Bearer Token |CURLOPT_XOAUTH2_BEARER
||
--pass <phrase>
| Pass phrase for the private key |CURLOPT_SSLCERTPASSWD
,CURLOPT_SSLKEYPASSWD
,CURLE_BAD_PASSWORD_ENTERED
,CURLE_FTP_USER_PASSWORD_INCORRECT
,CURLE_FTP_WEIRD_PASS_REPLY
,CURLFTPSSL_CCC_PASSIVE
,CURLOPT_KEYPASSWD
,CURLSSH_AUTH_PASSWORD
,CURLOPT_PASSWORD
,CURLOPT_PROXYPASSWORD
,CURLOPT_TLSAUTH_PASSWORD
||
--path-as-is
| Do not squash .. sequences in URL path |CURLOPT_PATH_AS_IS
||
--pinnedpubkey <hashes>
| FILE/HASHES Public key to verify peer against |CURLE_SSL_PINNEDPUBKEYNOTMATCH
||
--proto <protocols>
| Enable/disable PROTOCOLS |CURLE_UNSUPPORTED_PROTOCOL
,CURLOPT_PROTOCOLS
,CURLOPT_REDIR_PROTOCOLS
,CURLPROTO_ALL
,CURLPROTO_DICT
,CURLPROTO_FILE
,CURLPROTO_FTP
,CURLPROTO_FTPS
,CURLPROTO_HTTP
,CURLPROTO_HTTPS
,CURLPROTO_LDAP
,CURLPROTO_LDAPS
,CURLPROTO_SCP
,CURLPROTO_SFTP
,CURLPROTO_TELNET
,CURLPROTO_TFTP
,CURLPROTO_IMAP
,CURLPROTO_IMAPS
,CURLPROTO_POP3
,CURLPROTO_POP3S
,CURLPROTO_RTSP
,CURLPROTO_SMTP
,CURLPROTO_SMTPS
,CURLPROTO_RTMP
,CURLPROTO_RTMPE
,CURLPROTO_RTMPS
,CURLPROTO_RTMPT
,CURLPROTO_RTMPTE
,CURLPROTO_RTMPTS
,CURLPROTO_GOPHER
,CURLPROTO_SMB
,CURLPROTO_SMBS
,CURLOPT_DEFAULT_PROTOCOL
||
--proxy-service-name <name>
| SPNEGO proxy service name |CURLOPT_PROXY_SERVICE_NAME
||
-p
--proxytunnel
| Operate through an HTTP proxy tunnel (using CONNECT) |CURLOPT_HTTPPROXYTUNNEL
||
--pubkey <key>
| SSH Public key file name |CURLE_SSL_PINNEDPUBKEYNOTMATCH
||
-Q
--quote
| Send command(s) to server before transfer |CURLOPT_POSTQUOTE
,CURLOPT_PREQUOTE
,CURLOPT_QUOTE
,CURLE_FTP_QUOTE_ERROR
||
--random-file <file>
| File for reading random data from |CURLOPT_RANDOM_FILE
||
-r
--range <range>
| Retrieve only the bytes within RANGE |CURLOPT_RANGE
,CURLE_HTTP_RANGE_ERROR
,CURLOPT_LOCALPORTRANGE
||
-e
--referer <URL>
| Referrer URL |CURLOPT_AUTOREFERER
,CURLOPT_REFERER
||
-X
--request <command>
| Specify request command to use |CURLOPT_CUSTOMREQUEST
,CURLINFO_REQUEST_SIZE
,CURLOPT_RTSP_REQUEST
||
--resolve <host:port:address[,address]...>
| Resolve the host+port to this address |CURLE_COULDNT_RESOLVE_HOST
,CURLE_COULDNT_RESOLVE_PROXY
,CURLOPT_IPRESOLVE
,CURL_IPRESOLVE_V4
,CURL_IPRESOLVE_V6
,CURL_IPRESOLVE_WHATEVER
,CURLOPT_RESOLVE
||
--retry <num>
| Retry request if transient problems occur |CURLFTP_CREATE_DIR_RETRY
||
--sasl-ir
| Enable initial response in SASL authentication |CURLOPT_SASL_IR
||
--service-name <name>
| SPNEGO service name |CURLOPT_PROXY_SERVICE_NAME
,CURLOPT_SERVICE_NAME
||
--socks4 <host[:port]>
| SOCKS4 proxy on given host + port |CURLPROXY_SOCKS4
,CURLPROXY_SOCKS4A
||
--socks4a <host[:port]>
| SOCKS4a proxy on given host + port |CURLPROXY_SOCKS4A
||
--socks5 <host[:port]>
| SOCKS5 proxy on given host + port |CURLPROXY_SOCKS5
,CURLPROXY_SOCKS5_HOSTNAME
,CURLOPT_SOCKS5_GSSAPI_NEC
,CURLOPT_SOCKS5_GSSAPI_SERVICE
||
--socks5-gssapi
| Enable GSS-API auth for SOCKS5 proxies |CURLOPT_SOCKS5_GSSAPI_NEC
,CURLOPT_SOCKS5_GSSAPI_SERVICE
||
--socks5-gssapi-nec
| Compatibility with NEC SOCKS5 server |CURLOPT_SOCKS5_GSSAPI_NEC
||
--socks5-gssapi-service <name>
| SOCKS5 proxy service name for GSS-API |CURLOPT_SOCKS5_GSSAPI_SERVICE
||
--socks5-hostname <host[:port]>
| SOCKS5 proxy, pass host name to proxy |CURLPROXY_SOCKS5_HOSTNAME
||
-Y
--speed-limit <speed>
| Stop transfers slower than this |CURLOPT_LOW_SPEED_LIMIT
||
-y
--speed-time <seconds>
| Trigger 'speed-limit' abort after this time |CURLOPT_LOW_SPEED_TIME
||
--ssl
| Try SSL/TLS |CURLOPT_SSLCERT
,CURLOPT_SSLCERTPASSWD
,CURLOPT_SSLCERTTYPE
,CURLOPT_SSLENGINE
,CURLOPT_SSLENGINE_DEFAULT
,CURLOPT_SSLKEY
,CURLOPT_SSLKEYPASSWD
,CURLOPT_SSLKEYTYPE
,CURLOPT_SSLVERSION
,CURLOPT_SSL_CIPHER_LIST
,CURLOPT_SSL_VERIFYHOST
,CURLOPT_SSL_VERIFYPEER
,CURLE_SSL_CACERT
,CURLE_SSL_CERTPROBLEM
,CURLE_SSL_CIPHER
,CURLE_SSL_CONNECT_ERROR
,CURLE_SSL_ENGINE_NOTFOUND
,CURLE_SSL_ENGINE_SETFAILED
,CURLE_SSL_PEER_CERTIFICATE
,CURLE_SSL_PINNEDPUBKEYNOTMATCH
,CURLINFO_SSL_VERIFYRESULT
,CURL_LOCK_DATA_SSL_SESSION
,CURL_SSLVERSION_DEFAULT
,CURL_SSLVERSION_SSLv2
,CURL_SSLVERSION_SSLv3
,CURL_SSLVERSION_TLSv1
,CURL_VERSION_SSL
,CURLE_FTP_SSL_FAILED
,CURLFTPSSL_ALL
,CURLFTPSSL_CONTROL
,CURLFTPSSL_NONE
,CURLFTPSSL_TRY
,CURLOPT_FTP_SSL
,CURLFTPAUTH_SSL
,CURLOPT_FTPSSLAUTH
,CURLINFO_SSL_ENGINES
,CURLE_SSL_CACERT_BADFILE
,CURLOPT_SSL_SESSIONID_CACHE
,CURLOPT_FTP_SSL_CCC
,CURLFTPSSL_CCC_ACTIVE
,CURLFTPSSL_CCC_NONE
,CURLFTPSSL_CCC_PASSIVE
,CURLOPT_USE_SSL
,CURLUSESSL_ALL
,CURLUSESSL_CONTROL
,CURLUSESSL_NONE
,CURLUSESSL_TRY
,CURLOPT_SSL_OPTIONS
,CURLSSLOPT_ALLOW_BEAST
,CURL_SSLVERSION_TLSv1_0
,CURL_SSLVERSION_TLSv1_1
,CURL_SSLVERSION_TLSv1_2
,CURLOPT_SSL_ENABLE_ALPN
,CURLOPT_SSL_ENABLE_NPN
,CURLOPT_SSL_VERIFYSTATUS
,CURLOPT_SSL_FALSESTART
,CURLSSLOPT_NO_REVOKE
||
-2
--sslv2
| Use SSLv2 |CURL_SSLVERSION_SSLv2
||
-3
--sslv3
| Use SSLv3 |CURL_SSLVERSION_SSLv3
||
--stderr
| Where to redirect stderr |CURLOPT_STDERR
||
--tcp-fastopen
| Use TCP Fast Open |CURLOPT_TCP_FASTOPEN
||
--tcp-nodelay
| Use the TCP_NODELAY option |CURLOPT_TCP_NODELAY
||
-t
--telnet-option <opt=val>
| Set telnet option |CURLE_TELNET_OPTION_SYNTAX
,CURLE_UNKNOWN_TELNET_OPTION
||
--tftp-blksize <value>
| Set TFTP BLKSIZE option |CURLOPT_TFTP_BLKSIZE
||
--tftp-no-options
| Do not send any TFTP options |CURLOPT_TFTP_NO_OPTIONS
||
-1
--tlsv1
| Use TLSv1.0 or greater |CURL_SSLVERSION_TLSv1
,CURL_SSLVERSION_TLSv1_0
,CURL_SSLVERSION_TLSv1_1
,CURL_SSLVERSION_TLSv1_2
||
--unix-socket <path>
| Connect through this Unix domain socket |CURLOPT_UNIX_SOCKET_PATH
||
--url <url>
| URL to work with |CURLOPT_URL
||
-u
--user <user:password>
| Server user and password |CURLOPT_PROXYUSERPWD
,CURLOPT_USERAGENT
,CURLOPT_USERPWD
,CURLE_FTP_USER_PASSWORD_INCORRECT
,CURLE_FTP_WEIRD_USER_REPLY
,CURLE_MALFORMAT_USER
,CURLE_URL_MALFORMAT_USER
,CURLOPT_FTP_ALTERNATIVE_TO_USER
,CURLOPT_PROXYUSERNAME
,CURLOPT_USERNAME
,CURLOPT_TLSAUTH_USERNAME
||
-v
--verbose
| Make the operation more talkative |CURLOPT_VERBOSE
||
-V
--version
| Show version number and quit |CURLOPT_HTTP_VERSION
,CURLOPT_SSLVERSION
,CURLVERSION_NOW
,CURL_HTTP_VERSION_1_0
,CURL_HTTP_VERSION_1_1
,CURL_HTTP_VERSION_NONE
,CURL_SSLVERSION_DEFAULT
,CURL_SSLVERSION_SSLv2
,CURL_SSLVERSION_SSLv3
,CURL_SSLVERSION_TLSv1
,CURL_VERSION_IPV6
,CURL_VERSION_KERBEROS4
,CURL_VERSION_LIBZ
,CURL_VERSION_SSL
,CURL_HTTP_VERSION_2_0
,CURL_VERSION_HTTP2
,CURL_SSLVERSION_TLSv1_0
,CURL_SSLVERSION_TLSv1_1
,CURL_SSLVERSION_TLSv1_2
,CURL_HTTP_VERSION_2
,CURL_HTTP_VERSION_2TLS
,CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
|Note that this only lists somewhat exact matches of --long options to similarly named CURLOPT_ constants. But it should give you enough hints on how to compare the
curl --help
output and the PHP curl_setopt() list.wj8zmpe15#
试试这个:
fslejnso6#
libcurl选项就是为此目的而添加的,尽管它生成的是C程序,但我认为它应该很容易翻译成PHP
oaxa6hgo7#
以MYYN的答案为起点,以this page为参考,介绍如何使用PHP cURL发送POST数据,下面是我的建议(我目前正在做一些非常类似的事情):
如果需要,可以使用curl_setopt_array()调用来优化许多curl_setopt。
798qvoo88#
最好这样。排成一行。
d4so4syb9#
使用curlconverter.com/php/,它会将curl命令转换为