Install and Start Using the PHP SDK with Couchbase Server
The Couchbase PHP SDK allows you to connect to a Couchbase cluster from PHP. It is a native PHP extension and uses the Couchbase high-performance C library to handle communicating to the cluster over Couchbase binary protocols.
The Couchbase PHP SDK 3.x is a complete rewrite of the API, reducing the number of overloads to present a simplified surface area, and adding support for future Couchbase Server features like Collections and Scopes (available in Couchbase Server 7.0).
The Couchbase PHP SDK is compatible with PHP 7.3+.
Before installing the PHP SDK, you must install the C SDK — libcouchbase (LCB); version 3.2.0 or higher is required for PHP Client 3.2.
After installing the C SDK, install the PHP SDK through your PHP distribution’s pecl command:
$ pecl install https://packages.couchbase.com/clients/php/couchbase-3.2.1.tgz
Further details can be found on the Release Notes & Archives page.
In particular, look at the post-install instructions in light of the
.ini practices for your platform,
and note that the Couchbase SDK depends on the JSON module, therefore that module has to be loaded before the SDK.
Couchbase uses Role Based Access Control (RBAC) to control access to resources. Here we will use the Full Admin role created during installation of the Couchbase Data Platform. For production client code, you will want to use more appropriate, restrictive settings, but here we want to get you up and running quickly. If you’re developing client code on the same VM or machine as the Couchbase Server, your URI can be localhost.
$connectionString = "couchbase://localhost"; $options = new \Couchbase\ClusterOptions(); $options->credentials("Administrator", "password"); $cluster = new \Couchbase\Cluster($connectionString, $options);
Cluster provides access to cluster-level operations like N1QL queries, analytics, or full-text search.
You will also find different management APIs on it.
To access the KV (Key/Value) API or to query views, you need to open a
// get a bucket reference $bucket = $cluster->bucket("bucket-name");
If you installed the travel sample data bucket, substitute travel-sample for bucket-name.
// get a default collection reference $collection = $bucket->defaultCollection(); // or for named collection $collection = $bucket->scope("myapp")->collection("my-collection");
The 3.2 SDK supports full integration with the Collections feature in the latest release of the Couchbase Data Platform, Couchbase Server 7.0.
This brings complete support of Collections, allowing Documents to be grouped by purpose or theme, according to a specified Scope.
Here we will use the
users collection within the
tenant_agent_00 scope from
travel-sample bucket as an example.
$scope = $bucket->scope("tenant_agent_00"); $collection = $agentScope->collection("users");
The code shows how you would use a named collection and scope. A named or default collection will provide the same functionality as bucket-level operations did in previous versions of Couchbase Server.
defaultCollection must be used when connecting to a 6.6 cluster or earlier.
// upsert document $upsertResult = $collection->upsert("my-document", ["name" => "mike"]); // get document $getResult = $collection->get("my-document");
If you are connecting to Couchbase Capella, be sure to get the correct endpoint as well as user, password, and
For developing on Capella, if you are not working from the same Availability Zone, refer to the following:
The Migrating from SDK2 to 3 page highlights the main differences to be aware of when migrating your code.
Couchbase welcomes community contributions to the PHP SDK. The PHP SDK source code is available on GitHub.