Skip to content

PHP fsockopen() Function: Everything You Need to Know

As a PHP developer, you may need to establish a network connection and communicate with another server using the TCP/IP protocol. The `fsockopen()` function was historically used for this purpose. Note: `fsockopen()` was deprecated in PHP 8.1 and removed in PHP 8.2. Modern PHP applications should use `stream_socket_client()` or cURL instead. This article explains the legacy function for reference and migration purposes.

What is the fsockopen() Function?

The `fsockopen()` function opens a TCP/IP network connection to a specified host and port, allowing data to be sent and received via file pointers.

How to Use the fsockopen() Function

Using the `fsockopen()` function is straightforward. Here is the syntax:

PHP Syntax

php
fsockopen($hostname, $port, &$errno, &$errstr, $timeout);

The function accepts five parameters:

  • `$hostname`: The host name or IP address of the server.
  • `$port`: The port number to connect to.
  • `&$errno`: A variable that stores the error number, if any.
  • `&$errstr`: A variable that stores the error message, if any.
  • `$timeout`: The connection timeout in seconds. Defaults to the `default_socket_timeout` `ini` setting if omitted.

Note: For secure connections, prefix the hostname with `ssl://` or `tls://` (e.g., `tls://example.com`).

Here is an example of how to use the `fsockopen()` function to establish a network connection with a server and send/receive data:

Example Usage

php
<?php

$host = "example.com";
$port = 80;
$timeout = 30;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
  echo "Error: $errstr ($errno)<br/>";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: $host\r\n";
  $out .= "Connection: Close\r\n\r\n";
  fwrite($fp, $out);
  while (!feof($fp)) {
    echo fgets($fp, 128);
  }
  fclose($fp);
}

In this example, we use the `fsockopen()` function to establish a network connection with the server `example.com` on port 80. We specify a timeout of 30 seconds for the connection. If the connection is established successfully, we send an HTTP GET request to the server and receive the response using the `fgets()` function.

Note: For HTTPS requests, use `tls://` as the protocol prefix in the `$host` variable.

Conclusion

While `fsockopen()` provides low-level TCP/IP communication, it is now obsolete in modern PHP. Use `stream_socket_client()` or cURL for new projects. This reference remains useful for maintaining legacy codebases.

Practice

What does the fsockopen function in PHP do?

Do you find this helpful?

Dual-run preview — compare with live Symfony routes.