Let's picture you want to deploy your awesome microproject written in PHP and you don't know where. You have found Vercel it's awesome, but for static sites. Not anymore! I would like to introduce you your new best friend vercel-php, PHP runtime for Vercel platform.
Most simple example project is this one, using following project structure.
project
├── api
│   └── index.php
└── .vercelignore
└── vercel.jsonFirst file api/index.php is entrypoint of our application. It should be placed in api folder, it's very standard location for Vercel.
<?php
phpinfo();Second file vercel.json is pure gold here. Setup your project with configuration like this and voila. That's all.
{
    "functions": {
        "api/*.php": {
            "runtime": "[email protected]"
        }
    }
}Last thing you have to do is call vercel. If you are more interested take a look at features and usage.
# Install it globally
npm i -g vercel
# Log in
vercel login
# Let's fly
vercel
Are you ready to deploy your first PHP project to Vercel? Click & Go!
- Architecture: PHP development server (🚀 fast enough)
 - PHP version: 8.2 (https://example-php-8-2.vercel.app)
 - Extensions: apcu, bcmath, brotli, bz2, calendar, Core, ctype, curl, date, dom, ds, exif, fileinfo, filter, ftp, geoip, gettext, hash, iconv, igbinary, imap, intl, json, libxml, lua, mbstring, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, protobuf, readline, redis, Reflection, runkit7, session, SimpleXML, soap, sockets, sodium, SPL, sqlite3, standard, swoole, timecop, tokenizer, uuid, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zlib, zip
 - Speed: cold ~250ms / warm ~5ms
 - Memory: ~90mb
 - Frameworks: Nette, Symfony, Lumen, Slim, Phalcon
 
List of all installable extensions is on this page https://blog.remirepo.net/pages/PECL-extensions-RPM-status.
[email protected]- PHP 8.2.x (https://example-php-8-2.vercel.app)[email protected]- PHP 8.1.x (https://example-php-8-1.vercel.app)[email protected]- PHP 8.0.x (https://example-php-8-0.vercel.app)[email protected]- PHP 7.4.x (https://example-php-7-4.vercel.app)
Before you can start using this runtime, you should learn about Vercel and how runtimes works. Take a look at blogpost about Serverless Functions.
You should define functions property in vercel.json and list PHP files directly or using wildcard (*).
If you need to route everything to index, use routes property.
{
    "functions": {
        "api/*.php": {
            "runtime": "[email protected]"
        }
    },
    "routes": [{ "src": "/(.*)", "dest": "/api/index.php" }]
}Do you have more questions (❓)? Let's move to FAQ.
For running vercel dev properly, you need to have PHP installed on your computer, learn more.
But it's PHP and as you know PHP has built-in development server. It works out of box.