The PHP version is per site
Different projects need different PHP versions, so the version belongs to the site, not the server. On Cloud Ninza you pick PHP 7.4, 8.1, 8.2, 8.3, 8.4 or 8.5 for each website and change it in Domains. Older WordPress plugins and legacy apps keep working on the version they need while new projects use the latest.
Composer's platform check will tell you the minimum version a project's dependencies were built for; match it before you deploy.
Laravel needs public/ as the web root
A Laravel, Symfony or CodeIgniter project keeps its code outside the web root and serves only the public folder. The Laravel preset in App settings sets the web root to public/ for you, so .env, vendor/ and storage/ are never served. If you upload a project without changing this, your .env file — with the app key and database password — can end up downloadable.
Composer, artisan and the terminal
Composer is installed. Run composer install from the dashboard or in the browser terminal, and artisan commands — migrate, config:cache, storage:link — the same way. SSH with your key works too, inside a sandbox that sees only your own account.
Queues and the scheduler
Laravel's scheduler runs from one cron entry each minute, which you add under Cron jobs. Queued jobs can be processed by a scheduled queue:work --stop-when-empty run on shared hosting. If your app needs a queue worker running all the time, or Redis, that is the point to move the worker to a cloud server from ₹1,073 a month.
- Scheduler: one cron entry every minute
- Queues: scheduled queue:work --stop-when-empty
- Always-on workers and Redis: a cloud server
Deploy from Git with rollback
Connect the repository and choose the branch. Each push builds a fresh release (composer install, plus any build command you set), shares the folders that must persist between releases — storage/ and .env — switches the site to the new release, checks it answers and rolls back automatically if not. The .git folder never reaches the web root.
Databases without passwords in chat
Create MariaDB/MySQL or PostgreSQL databases from the dashboard. phpMyAdmin opens already signed in to one database, with a temporary login that is never shown or sent anywhere. Backups of the whole project — files and databases — are one button on the Backups page, ready to download.
When PHP hosting is not enough
Managed PHP hosting suits business sites, Laravel and Symfony apps, CMSs and APIs. Move to a cloud server for always-on workers, Redis or Elasticsearch, very high traffic, or custom PHP extensions. The cloud price calculator shows the cost before you ask for a quote.
Preparing a Laravel project for production
Before the first deploy, set APP_ENV=production and APP_DEBUG=false, generate an APP_KEY, and add the database settings as environment variables. Run php artisan config:cache and route:cache as part of the build so every request does not re-read configuration. Make storage/ and bootstrap/cache/ writable by the app, and run storage:link once so public files in storage are served.
Keep secrets out of the repository: .env stays on the server as a shared file, so each release reads the same settings without them ever being committed.
Performance basics for PHP apps
PHP performance on hosting comes mostly from three things. Use a current PHP version — newer versions are noticeably faster than old ones. Cache what you can: configuration and routes in Laravel, full pages for anonymous visitors on content sites. And keep database queries lean: add indexes for the columns you filter on, and avoid loading related records one at a time in a loop.
Check the error log in the dashboard after each release; slow queries and warnings show up there long before visitors complain.
A first deployment, step by step
Create the PHP site, choose its PHP version in Domains, and pick the Laravel preset in App settings so public/ becomes the web root. Create a database and add its details as environment variables. Connect the repository under Git deployments, add storage and .env as shared paths, and set the build to composer install --no-dev followed by the artisan cache commands. Deploy, then add the scheduler cron entry. From then on, every push builds a new release with automatic rollback.
Common Laravel hosting errors
A 500 error right after deploy is usually a missing APP_KEY or an unwritable storage folder. "Your Composer dependencies require a PHP version" means the site's PHP version is older than the one the dependencies were built for — raise it in Domains. A blank page with a 404 for every route often means the web root is the project root rather than public/. Each of these is visible in the error log within seconds.
Queues and the scheduler
Laravel's scheduler needs one cron entry that runs php artisan schedule:run every minute; add it from the Cron jobs page and the scheduler takes care of the rest. Queues need more thought. On shared hosting there are no always-running workers, so use the database or sync queue driver for light work and have the scheduler process queued jobs with queue:work --stop-when-empty every minute.
If the app depends on a busy queue that must run continuously — sending thousands of emails, processing uploads — run the workers on a small cloud server and keep the web app on managed hosting.
Other PHP frameworks and CMSs
The same approach works for Symfony, CodeIgniter and plain PHP. Choose the preset or set the web root to the folder that holds index.php, set the PHP version per site, add the database, and deploy from Git or upload through the File manager. Content systems such as WordPress, Joomla and Drupal run on the same platform, so a company with a Laravel app and a WordPress marketing site can keep both under one account.
Composer and dependencies
Commit composer.lock so every release installs the same versions, and use composer install --no-dev --optimize-autoloader in the build. Composer is available in the terminal and in Git builds. If a package needs a PHP extension, check it is available before you depend on it; most common extensions are, and support can confirm any you are unsure of.
Key takeaways
The short version, for anyone skimming:
- Choose PHP 7.4 to 8.5 per site and match Composer's platform requirement.
- Serve only public/ for Laravel, Symfony and CodeIgniter — never the project root.
- Run the scheduler from cron; move always-on queue workers to a cloud server.
- Git deployments share storage/ and .env between releases and roll back on failure.
- PHP plans start at ₹1,188 a year.
PHP Hosting
PHP hosting on cloud servers in India from ₹99 a month, billed yearly. PHP version of your choice, 7.4 to 8.5 · MariaDB, MySQL or PostgreSQL included · External databases — MongoDB Atlas and others by connection string.
Hosting from ₹99 a month on servers in India
WordPress, PHP, Node.js, Python and Java plans with free SSL and your choice of version. Create your account, pick a plan and pay by UPI, card or netbanking; your hosting is created automatically and you get your login by email, usually within minutes.