api.github.com недоступен через PHP на entware

shredder

Новичок
Добрый день.
Платформа entware, PHP 7.2.22
Известно, что в отличие от многих других сайтов, api.github.com разрешает доступ к себе ТОЛЬКО (не ниже) по TLS 1.2
Пример PHP скрипта, генерирующий ошибку:

Код:
<?php

$arr_hosts = array(
 'yandex.ru'
,'api.github.com'
);

foreach($arr_hosts as $host){
    print "check $host:<br/>\r\n";
    $fp = stream_socket_client("tlsv1.2://$host:443", $errno, $errstr, 30);
    if (!$fp) {
        die("Unable to connect: $errstr ($errno)");
    }
    $header = "GET / HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\n\r\n";
    print $header;
    fwrite($fp, $header);
    if (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    fclose($fp);
}

?>
Выдаёт ошибку "error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version" :
check yandex.ru:<br/>
GET / HTTP/1.0
Host: yandex.ru
Accept: */*

HTTP/1.1 200 Ok
check api.github.com:<br/>
<br />
<b>Warning</b>: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version in <b>/opt/share/www/test_crypto.php</b> on line <b>42</b><br />
<br />
<b>Warning</b>: stream_socket_client(): Failed to enable crypto in <b>/opt/share/www/test_crypto.php</b> on line <b>42</b><br />
<br />
<b>Warning</b>: stream_socket_client(): unable to connect to tlsv1.2://api.github.com:443 (Unknown error) in <b>/opt/share/www/test_crypto.php</b> on line <b>42</b><br />
Unable to connect: (0)
При этом curl работает корректно:

curl https://api.github.com/repos/danog/MagicalSerializer/zipball/87b6ed05a86021e9364f31133089bb83980d5e24

, из чего предполагаю, что openssl функционирует и настроен корректно.
Поставил на десктоп с windows PHP 7.2.22, там тестовый скрипт отрабатывает без ошибок.
, могу предположить что PHP как-то криво откомпилирован-настроен, либо его версия под линукс работает некорректно.
Что тут можно сделать, куда копать?

P.S. обнаружилось это, когда composer не смог скачать зависимости с гитхаба.
 

shredder

Новичок
нет. у меня проблема не в wget, а в PHP.
там предлагают утилиту обновить, а у меня PHP достаточно новый и обновить я его не могу - он ставится из репозитория Entware как есть.
как я уже писал, в ОС утилиты нормально работают с этим URL.
 

ksnk

прохожий
Тогда - вот это будет ближе, наверное,
В этом случае потребуется что-то сделать с openSSL. Для начала - выяснить, действительно ли старая версия на сервере, потом капать на мозги саппорту. Или поменять ключи для этого сервера 1.2 на 1.0
 

fixxxer

К.О.
Партнер клуба
Проверь через openssl s_client -tls1_2.

Скорее всего, там древний openssl (или странно собранный).

Если с openssl все нормально, покажи строчку configure из phpinfo().
 

shredder

Новичок
увы, новая версия OpenSSL на сервере = OpenSSL/1.1.1d
Вот что пишет phpinfo в разделе curl:
curl
cURL supportenabled
cURL Information7.66.0
Age5
Features
AsynchDNSNo
CharConvNo
DebugNo
GSS-NegotiateNo
IDNNo
IPv6Yes
krb4No
LargefileYes
libzYes
NTLMNo
NTLMWBNo
SPNEGONo
SSLYes
SSPINo
TLS-SRPNo
HTTP2No
GSSAPINo
KERBEROS5No
UNIX_SOCKETSNo
PSLNo
Protocolsfile, ftp, ftps, http, https, imap, imaps, pop3, pop3s, rtsp, smtp, smtps, tftp
Hostmipsel-openwrt-linux-gnu
SSL VersionOpenSSL/1.1.1d
ZLib Version1.2.11
Поменять ключи? - я боюсь, что собственники api.github.com не захотят ради меня разрешать доступ к серверу по устаревшим протоколам, не для того они его запрещали :)
 
Последнее редактирование:

shredder

Новичок
Проверь через openssl s_client -tls1_2.

Скорее всего, там древний openssl (или странно собранный).
Спасибо, проверял уже.
Там нормальный новый openssl, и прекрасно коннектится, я уже поверял, вот:
~ # openssl s_client -connect api.github.com:443 -tls1_2
CONNECTED(00000004)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify return:1
depth=0 C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = *.github.com
verify return:1
---
Certificate chain
0 s:C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = *.github.com
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
1 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGXTCCBUWgAwIBAgIQAzcKtii/mNK7zeHCeX1GNDANBgkqhkiG9w0BAQsFADBw
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz
dXJhbmNlIFNlcnZlciBDQTAeFw0xOTA3MDgwMDAwMDBaFw0yMDA3MTYxMjAwMDBa
MGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRUwEwYDVQQKEwxHaXRIdWIsIEluYy4xFTATBgNVBAMMDCou
Z2l0aHViLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKk6u9U
B/RrGpmany2dsicZBnCiE3XMCpvhwuSfnxQFEYaJLFhEjRQ5ZXgJNg9lw5KO3nsK
xrmqKcnGJoUsQs8PO7yWhJkCEYYubWaZhKyvvE89/8ehBzKhFAGXnkMBE7NX2t9f
et5HMbKsGFxXV3cnube5UHrNEp1B6uQHiyKNLIn+Mh5tufrW2IqMsm6mx0w1IHLS
kwO58HR0vYToQf2azRe2rbnBwYoUuy1y4rUWEbj9JjG08VtE61JrACADyzXahrTI
LIFUpPUULzKmYJiv0klb24AyNxIM21ziwJoygtO0SWnm9spVHKmOlU+k5wvvkrWe
QbzxyfSS+TDSUDUCAwEAAaOCAvkwggL1MB8GA1UdIwQYMBaAFFFo/5CvAgd1PMzZ
ZWRiohK4WXI7MB0GA1UdDgQWBBTPHAIJL+PAi+ucsDd9zSXeEc4i9jAjBgNVHREE
HDAaggwqLmdpdGh1Yi5jb22CCmdpdGh1Yi5jb20wDgYDVR0PAQH/BAQDAgWgMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB1BgNVHR8EbjBsMDSgMqAwhi5o
dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1oYS1zZXJ2ZXItZzYuY3JsMDSg
MqAwhi5odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1oYS1zZXJ2ZXItZzYu
Y3JsMEwGA1UdIARFMEMwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBz
Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQICMIGDBggrBgEFBQcBAQR3
MHUwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBNBggrBgEF
BQcwAoZBaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkhp
Z2hBc3N1cmFuY2VTZXJ2ZXJDQS5jcnQwDAYDVR0TAQH/BAIwADCCAQQGCisGAQQB
1nkCBAIEgfUEgfIA8AB2ALvZ37wfinG1k5Qjl6qSe0c4V5UKq1LoGpCWZDaOHtGF
AAABa9K+djMAAAQDAEcwRQIgX887fhS8bskpm0GLMDwFpZxX9Itq6NVXic2s0u5H
MkoCIQD2g/GrOkxiEBsvOU33OaBWa/YpVM2q34oPQYsT2BBiTAB2AId1v+dZfPiM
Q5lfvfNu/1aNR1Y2/0q1YMG06v9eoIMPAAABa9K+dnUAAAQDAEcwRQIgKW7YYDCy
ZPlFtWRvxTSRnqgO8eVZaNIQircmagyJDUMCIQDTxO+FTCqXc9+zVTofe0fK27G4
MgvfuWw79FcXRAJ5eTANBgkqhkiG9w0BAQsFAAOCAQEAY5betC2DT9nbXVqVXvI/
JF+XUR605OvYZ1QG2OBm2ktMhgtpFoRQmh2sPHvgTijVpP9NX/jlPrnTm9Wo9w7g
lKqKYj+YEKgzEugiVF/q0d2NkeetEyNL6rHuvid9BS4o9Yzc8l346CDaKbV1PPkh
uBNsudoG1CwgWrB/FWzw1L3UevSkmXV9ZTcgGIZFvkJOSYR6vb6nh2Pjf6B9r70P
Qa989SEODJ14iaD0Nb5KtE+FJH+rweQgh8ibRdZeNNbHM5t56UVL9PvXvXWMTzQ4
gG0/1LcruPG4BpbHkRoKAOPjAauO4w0NMReg2qRIraSB6eLZwvpf2SyuHoaoXSgt
kg==
-----END CERTIFICATE-----
subject=C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = *.github.com

issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3315 bytes and written 302 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-CHACHA20-POLY1305
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-CHACHA20-POLY1305
Session-ID: 241E0906078A294FE95E6594F1E6328A822E307B4221B3CBCC41D92ED708D442
Session-ID-ctx:
Master-Key: CBCB33815216FE159C8FAAD7A4E41642F472EBDEFD7E3A4C7C94EE9C02FEB8333265BF2B24CEF7706674468F54D2496B
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1572434538
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
---
GET / HTTP/1.0
Host: api.github.com
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36

HTTP/1.1 200 OK
Date: Wed, 30 Oct 2019 11:22:39 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2165
Connection: close
Server: GitHub.com
Status: 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1572438159
Cache-Control: public, max-age=60, s-maxage=60
Vary: Accept
ETag: "7dc470913f1fe9bb6c7355b50a0737bc"
X-GitHub-Media-Type: github.v3; format=json
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Frame-Options: deny
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Content-Security-Policy: default-src 'none'
Vary: Accept-Encoding
X-GitHub-Request-Id: CD68:21F99:11C7305:156D14C:5DB97270

{
"current_user_url": "https://api.github.com/user",
"current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
"authorizations_url": "https://api.github.com/authorizations",
"code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
"commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}",
"emails_url": "https://api.github.com/user/emails",
"emojis_url": "https://api.github.com/emojis",
"events_url": "https://api.github.com/events",
"feeds_url": "https://api.github.com/feeds",
"followers_url": "https://api.github.com/user/followers",
"following_url": "https://api.github.com/user/following{/target}",
"gists_url": "https://api.github.com/gists{/gist_id}",
"hub_url": "https://api.github.com/hub",
"issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
"issues_url": "https://api.github.com/issues",
"keys_url": "https://api.github.com/user/keys",
"notifications_url": "https://api.github.com/notifications",
"organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
"organization_url": "https://api.github.com/orgs/{org}",
"public_gists_url": "https://api.github.com/gists/public",
"rate_limit_url": "https://api.github.com/rate_limit",
"repository_url": "https://api.github.com/repos/{owner}/{repo}",
"repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
"current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
"starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
"starred_gists_url": "https://api.github.com/gists/starred",
"team_url": "https://api.github.com/teams",
"user_url": "https://api.github.com/users/{user}",
"user_organizations_url": "https://api.github.com/user/orgs",
"user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
"user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
}
closed
~ #
 

fixxxer

К.О.
Партнер клуба
Тогда надо смотреть как собран php, покажи configure.

И, да, если curl нормально работает, почему бы не использовать ext/curl вместо stream_socket_client?
 

shredder

Новичок
И, да, если curl нормально работает, почему бы не использовать ext/curl вместо stream_socket_client?
вот почему:
P.S. обнаружилось это, когда composer не смог скачать зависимости с гитхаба.
т.е. компосер сам качает и как качает я не знаю, править его содержимое мне кажется неблагоразумным.

Тогда надо смотреть как собран php, покажи configure.
вот оно:
Configure Command'./configure' '--target=mipsel-openwrt-linux' '--host=mipsel-openwrt-linux' '--build=x86_64-pc-linux-gnu' '--program-prefix=' '--program-suffix=' '--prefix=/opt' '--exec-prefix=/opt' '--bindir=/opt/bin' '--sbindir=/opt/sbin' '--libexecdir=/opt/lib' '--sysconfdir=/opt/etc' '--datadir=/opt/share' '--localstatedir=/opt/var' '--mandir=/opt/man' '--infodir=/opt/info' '--enable-cli' '--enable-cgi' '--enable-fpm' '--enable-shared' '--disable-static' '--with-pic' '--disable-rpath' '--disable-debug' '--disable-phpdbg' '--without-pear' '--with-config-file-path=/opt/etc' '--with-config-file-scan-dir=/opt/etc/php7' '--disable-short-tags' '--without-valgrind' '--with-pcre-regex=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-zlib=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-zlib-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-bcmath=shared' '--enable-calendar=shared' '--enable-ctype=shared' '--with-curl=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-fileinfo=shared' '--with-gettext=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libintl-full' '--enable-dom=shared' '--enable-exif=shared' '--enable-ftp=shared' '--with-gd=shared' '--with-jpeg-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-png-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--without-xpm-dir' '--enable-gd-native-ttf' '--disable-gd-jis-conv' '--with-freetype-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-gmp=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-hash=shared' '--with-iconv=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libiconv-full' '--with-imap=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-imap-kerberos=no' '--with-imap-ssl=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-intl=shared' '--enable-json=shared' '--with-ldap=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-ldap-sasl=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-mbstring=shared' '--enable-mbregex' '--with-mysqli=shared' '--enable-mysqlnd=shared' '--enable-opcache=shared' '--with-openssl=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-kerberos=no' '--with-openssl-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-pcntl=shared' '--enable-pdo=shared' '--with-pdo-mysql=shared' '--with-pdo-pgsql=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-pdo-sqlite=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--with-pgsql=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-phar=shared' '--enable-session=shared' '--enable-shmop=shared' '--enable-simplexml=shared' '--with-snmp=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-soap=shared' '--enable-sockets=shared' '--with-sqlite3=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-sysvmsg=shared' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-tokenizer=shared' '--enable-xml=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-xmlreader=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-xmlwriter=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt' '--enable-zip=shared' '--enable-filter' '--enable-libxml' '--with-libxml-dir=/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/include/libxml2' '--without-system-tzdata' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=mipsel-openwrt-linux' 'target_alias=mipsel-openwrt-linux' 'CFLAGS=-O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -I/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libiconv-full/include -I/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libintl-full/include ' 'CXXFLAGS=-O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -I/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libiconv-full/include -I/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib/libintl-full/include -std=c++0x '
 

shredder

Новичок
Похоже на баг PHP, исходя из новой порции информации.
Господин RYZHOV A.U. (тот, кто скомпилил бинарники к этой платформе), так прокомментировал проблему:
Я в душе́ не знаю почему на предложение о renegotiation со стороны api.github.com PHP скатывается в TLS1.0, curl так не делает. Если не предлагать renegotiation (что видно в выводе openssl s_client -connect api.github.com:443 -tls1_3), то при указаниии в PHP контекста "tlsv1.3" соединение устанавливается нормально.

Опциями в /etc/ssl/openssl.cnf Debian запрещает использование всего, что хуже TLS1.2 для всех пакетов системы:
[system_default_sect]
MinProtocol = TLSv1.2

Этим и пресекаются попытки PHP скатиться в TLS1.0.
т.е. похоже что в PHP есть баг, который в целом не выходит на поверхность благодаря конкретным настройкам по-умолчанию в большинстве ОС, но если настройка предполагается иная, то тут он и вылазит.
 

fixxxer

К.О.
Партнер клуба
Код:
--with-openssl=shared,/home/ryzhovau/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt
я фиг знает, что там у господина ryzhovau в той директории :)

возможно, дело еще в наборе используемых шифров, попробуй в явном виде указать через stream_context_create ssl => ciphers
 

shredder

Новичок
прописывание
openssl_conf = default_conf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
в .etc/ssl/openssl.cnf решило проблему.
есть всё же баг в PHP видится мне.
 

fixxxer

К.О.
Партнер клуба
Вполне возможно.

Проверь на последней версии PHP.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну например на http://phptester.net/
stream_socket_client("tlsv1.2://api.github.com:443", $errno, $errstr, 30);
выполняется на 7 и 5.6, но выдает ошибку на 5.5
вероятно, у ТС системная ssl отличается от той, с которой собран php

почти за 20 лет работы с php я встречал ошибку в самом php всего несколько раз, прмерно 1 к 1000 с проблемами библиотек и фреймворков
 

fixxxer

К.О.
Партнер клуба
В общем, да, надо взять тот же openwrt buildroot и самому собрать последнюю версию PHP под этот mips.
Мало ли что там кто накомпилял.
 
Сверху