Install the Manifest self-healing SDK in this PHP app.

Follow these in order.

1. Install the extension and the package. The extension is required — without
   it the SDK cannot see any HTTP call:

       pecl install opentelemetry
       composer require mnfst/manifest-php

   In Docker, add this to the Dockerfile instead of running pecl by hand:

       RUN pecl install opentelemetry && docker-php-ext-enable opentelemetry

2. Make the SDK load before the app's first HTTP call. PHP cannot attach a
   hook to a function that has already run, so an SDK that loads late sees
   nothing for the rest of that process. Set this in php.ini, a .user.ini, or
   the php-fpm pool config — read the config the app actually uses, don't
   sweep the repo:

       auto_prepend_file = vendor/mnfst/manifest-php/prepend.php

   If you cannot set it, call manifest() as the very first statement of the
   entry point instead (public/index.php, or the framework bootstrap), before
   any service boots:

       use function Mnfst\manifest;
       manifest();

3. Tell me exactly where to set these two for this app: the .env line, my
   host's dashboard, or the secret manager command. Then stop and wait.

       MNFST_KEY=<the key from my dashboard, I will paste it myself>
       MNFST_URL=https://app-staging.manifest.build

   If I do not have a key yet, tell me to create a project here first:
   https://app-staging.manifest.build

4. When I confirm they are set, tell me to restart php-fpm and trigger a
   failing API call.
   Reloading is not enough: a worker that already ran unhooked stays
   unhooked for every request it serves afterwards.
   Give me the start command and this link:
   https://app-staging.manifest.build

Laravel and CakePHP need no code of their own — Laravel's Http facade runs on
Guzzle, which is instrumented. A library with its own raw curl client, such as
stripe/stripe-php, is recorded but cannot be healed; say so rather than
claiming full coverage.

If this isn't a PHP app, or you find several apps that could be the one, stop
and ask me.

If you get stuck, stop and tell me to ask the Manifest developers from the
chatbot at the bottom left of my dashboard.
