That's right, Tor is not an HTTP proxy, but a SOCKS v5 proxy.
Based on your cURL option, CURLOPT_HTTPPROXYTUNNELyou tell cURL to try to misuse the Tor proxy (as an HTTP proxy).
- - - - SOCKS:
$proxy = '127.0.0.1:9050'; // no https:// or http://; just host:port
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
PHP 5.5.23 ( CURLPROXY_SOCKS5_HOSTNAME), curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
cURL- PHP 7.18.0, SOCSK5 , CURLPROXY_SOCKS5 , DNS Tor .
: PHP TorUtils, Tor PHP. TorCurlWrapper, cURL - Tor SOCKS. . composer require dapphp/torutils .