Это get_headers ( $ url ), а не get_headers ($ fp). Если я не читаю это полностью неправильно (и есть какой-то другой режим, который я никогда не видел), вам нужно передать ему URL, с которого вы читаете, а не дескриптор сокета. На самом деле, он, очевидно, делает свой собственный GET, поэтому он будет бесполезен для вашей текущей задачи.
fsockopen (...) - функция более низкого уровня (TCP / IP). Возвращает дескриптор сокета, а не дескриптор CURL. Вот почему вы не можете использовать curl_getinfo (...) на нем. Вы хотите что-то вроде этого ...
$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($fp);
$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);
кроме того, насколько я помню, вам нужно добавить 'cmd = _notify-validate' в поля сообщения.
Не используйте fsockopen (...). Да, я знаю, это то, что делает пример кода Paypal. Но он предназначен для работы везде и не может полагаться на установку CURL. Вы можете, так что используйте его.