# Publishing to Packagist

> How to publish the Fern PHP SDK to Packagist.

Publish your public-facing Fern PHP SDK to the [Packagist
registry](https://packagist.org/). After following the steps on this page,
you'll have a versioned package published on Packagist.

<Frame>
  <img src="https://files.buildwithfern.com/fern.docs.buildwithfern.com/learn/95d33575f74173e5e7494a8b19315d6e267b4e09c50ee55644686f6741e4a1fd/products/sdks/overview/php/assets/packagist-package.png" alt="Versioned package published on Packagist" />
</Frame>

<Info>
  This page assumes that you have:

  * An initialized `fern` folder. See [Set up the `fern`
    folder](/sdks/overview/quickstart).
  * A GitHub repository for your SDK. See [Project Structure](/sdks/overview/project-structure).
</Info>

## Configure `generators.yml`

<Steps>
  <Step title="Add repository location">
    PHP publishes via Git repositories, so remove the auto-generated `output`, `location`, and `path` fields. Instead, add the path to your GitHub repository:

    ```yaml {6-7}
    groups: 
      php-sdk:
        generators:
          - name: fernapi/fern-php-sdk
            version: 4.23.2
            github: 
              repository: your-org/company-php
    ```
  </Step>
</Steps>

## Set up Packagist publishing authentication

<Steps>
  <Step title="Log into Packagist">
    Log into [Packagist](https://packagist.org/login/) or [create an account with Packagist](https://packagist.org/register/).
  </Step>

  <Step title="Submit the Repository URL">
    1. Click **Submit**.
    2. Input the full URL of the repository where you generated your PHP SDK, then click **Check**.
    3. Fix any errors Packagist finds in your repository, then click **Submit**.

    <Frame>
      <img src="https://files.buildwithfern.com/fern.docs.buildwithfern.com/learn/535709461a584f985bebf2cf4227e351699f20eaa77a131b6f6dce4758ddb6fc/products/sdks/overview/php/assets/submit-package.png" alt="Submit Package Screen in Packagist" />
    </Frame>
  </Step>

  <Step title="Configure the GitHub Hook">
    Once you've submitted your URL, you'll be prompted to set up the GitHub Hook.

    1. In to your repository, go to **Settings > Webhooks**.
    2. Select **"Add webhook"**
    3. Set the Payload URL as `https://packagist.org/api/github?username=<your.packagist.username>`
    4. Set the content type as `application/json`
    5. Packagist autogenerates API Tokens. To find yours, go to your **Profile**. Then, add your token to the **Secret** field.
    6. Set the trigger events as **Just the `push` event**
    7. Click **"Add Webhook"**

    <Frame>
      <img src="https://files.buildwithfern.com/fern.docs.buildwithfern.com/learn/e8f5fa05931ee68cd8cd1fa2957a22987c4153e645672279341f8c02eaad907b/products/sdks/overview/php/assets/webhook.png" alt="GitHub Webhook for Packagist" />
    </Frame>
  </Step>
</Steps>

## Release your SDK to Packagist

At this point, you're ready to regenerate your SDK and publish it on Packagist:

```bash
fern generate --group php-sdk --version <version>
```

Local machine output will verify that the release is pushed to your
repository and tagged with the version you specified. Log back into Packagist, click on your username, and select **My packages** to see your new release.