Skip to content

metaregistrar/php-epp-client

Repository files navigation

PHP EPP Client

Latest Stable Version Total Downloads Latest Unstable Version

Object-oriented PHP EPP Client.

Welcome to the "object-oriented EPP client in PHP" project.

This project supports the following:

  • Full EPP 57xx RFC standard
  • Extensible PHP objects to add registry-specific additions
  • Rock-solid object-oriented programming, object inheritance and exception handling
  • Interface tested and in use with a registrar that handles 600.000+ domain names
  • Public/private key client certificates for connecting to EPP service (for example see Registries/IIS)
  • Connection to EPP via HTTP/SSL (for example see Registries/Openprovider)
  • DNSSEC transactions
  • Registry sunrise, landrush and claims periods (draft-ietf-eppext-launchphase)
  • TMCH/TMDB CNIS retrieval examples with standard ICANN registrar message

This code will provide you with a fully functional EPP client to connect to any registry world-wide that supports EPP. All code is organized in objects, so connecting to a new registry is just a matter of object re-use and extension. Sample registry connections are provided in the Registries directory.


Currently supported registries:

  • SIDN (.nl)
  • dotAmsterdam
  • Donuts
  • EurID (.eu)
  • DNS Belgium (.be .vlaanderen .brussels)
  • .CO.NL
  • dotFRL
  • IIS (.nu and .se)
  • CarDNS (.hr)
  • Metaregistrar
  • Nic.AT (.at)
  • Key Systems RRPPROXY
  • .PT
  • Switch (.ch)
  • Openprovider
  • Ficora (.fi)
  • DNS.PT (.pt)
  • Norid (.no)
  • Arnes (.si)
  • Nic.lv (.lv)

All code changes are tested automatically with the phpunit tests in the Tests directory

Example scipts in the main directory:

File Description
checkdomain.php Check one domain name.
timeddomaincheck.php Check multiple domain names and check how fast the registry is.
registerdomain.php Register a domain name.
changepassword.php Change EPP password.
infodomain.php Get information on a domain name.
modifydomain.php Update a domain name with new info.
createcontact.php Create a contact object.
updatecontact.php Update contact details of a created contact object.
createdomain.php Register a domain name in general availability phase.
signdomain.php DNSSEC sign a domain name.
poll.php List registry poll messages and confirm a message.
checklaunchdomain.php Check domain name in 'claims' phase of draft-ietf-eppext-launchphase and check if the domain is free.
createlaunchdomain.php Register domain name in 'claims' phase of draft-ietf-eppext-launchphase.
checktmchdomain.php Check domain name in the 'claims' phase and check if the domain has a claim and retrieve the cnis info from the TMCH.
test-claim.php Connect to the TMCH test service and retrieve the list of domain names, query cnis info and display icann std warning msg.
createclaimeddomain.php Create domain name that has a tmch claim in the claims phase of the launch.

How to use this repository

  1. Check out the latest version from github. (Or composer require metaregistrar/php-epp-client)
  2. Use the Examples/checkdomain.php and create a connection to your favorite registry (for example new Metaregistrar\EPP\metaregEppConnection()).
  3. Create a settings.ini in with the following contents:
        interface=eppConnection
        hostname=ssl://epp-ote.metaregistrar.com
        port=7000
        userid=xxxxxxxx
        password=xxxxxxxxx
        logging=true
        certificatefile=/home/xxxxxx/xxxxxxx.pem
        certificatepassword=xxxxxxx
        verifypeer=true/false
        verifypeername=true/false
        allowselfsigned=true/false
  1. Now, checkdomain.php should be functioning and checking domains.

If you do not want to use settings.ini files in the Registries directory, you can create a connection as follows: $conn = Metaregistrar\EPP\eppConnection::create('path-to-settings.ini');

Or set all parameters individually:

$conn = new Metaregistrar\EPP\eppConnection();
$conn->setHostname('ssl://epp-ote.metaregistrar.com'); // Hostname may vary depending on the registry selected
$conn->setPort(7000); // Port may vary depending on the registry selected
$conn->setUsername('xxxxxxxx');
$conn->setPassword('xxxxxxxxx');