Как включить функции для php-curl

Мне нужен мой PHP-скрипт CLI, чтобы опубликовать какое-то значение на сайте, прошедшем проверку подлинности SPNEGO.

$ch = curl_init(USERSPACE_MYSQL_SERVICES); curl_setopt_array($ch, [ CURLOPT_HTTPAUTH => ??, //Set to SPNEGO CURLOPT_POSTFIELDS => [...] ]); 

Однако SPNEGO отключен по какой-либо причине:

Выдержка из моего phpinfo:

 curl cURL support => enabled cURL Information => 7.21.6 Age => 3 Features AsynchDNS => No Debug => No GSS-Negotiate => Yes IDN => Yes IPv6 => Yes Largefile => Yes NTLM => Yes SPNEGO => No <--------------- SSL => Yes SSPI => No krb4 => No libz => Yes CharConv => No Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtmp, rtsp, smtp, smtps, telnet, tftp Host => x86_64-pc-linux-gnu SSL Version => OpenSSL/1.0.0e ZLib Version => 1.2.3.4 

Сервер Apache, с которым он взаимодействует, настроен следующим образом:

  AuthType Kerberos AuthName "Kerberos LAN Realm Login" KrbAuthRealm LAN Krb5KeyTab /etc/apache2/auth/apache2.keytab KrbMethodK5Passwd Off KrbSaveCredentials On KrbLocalUserMapping On 

Когда вы пытаетесь выполнить его через curl командной строки, он работает, но я должен ввести фиктивный пароль:

 curl --negotiate -u user https://example.com Enter host password for user 'user': <html> ... 

Как включить SPNEGO для curl php и как я буду использовать его в своем скрипте?

Обновить

Я пробовал следующее:

 curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPAUTH => CURLAUTH_ANY, CURLOPT_POSTFIELDS => [...] ]); $response = curl_exec($ch); $info = curl_getinfo($ch); if ($info['http_code'] >= 400) die("HTTP ERROR {$info['http_code']}"); echo $response; 

И я получаю: HTTP ERROR 401

Похоже, вам может понадобиться перекомпилировать завиток с аргументом «–with-spnego» в вашей команде configure.

Пример команды configure: http://curl.haxx.se/mail/lib-2012-02/0094.html

Полный на docs (overkill): http://curl.haxx.se/docs/install.html

Оказывается, мне не нужен SPNEGO с CURL, так как он отлично работает с GSS auth. Как и в случае с CLI, мне нужно установить CURLOPT_USERPWD без предоставления пароля:

 $username = rtrim(`id -un`, "\n"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPAUTH => CURLAUTH_ANY, CURLOPT_POSTFIELDS => [...], CURLOPT_USERPWD => "$username:" ]); 

Теперь все работает отлично.