Skip the setup. Our team will have you taking orders in 24 hours. Get started →
Getting Started

Installation

Setup Wizard Installation Requirements Installing with the setup wizard What the wizard does automatically Extensions and Composer Shared hosting tips St...

As of Version 4, TastyIgniter can be installed using the setup wizard (recommended for shared hosting), as a stand-alone application, or as a package inside an existing Laravel application.

The setup wizard is the recommended way to install TastyIgniter on shared hosting. Composer and SSH are not required to run the wizard — the installer downloads a distribution release with bundled dependencies that already includes vendor/. You will need Composer later to install and update extensions.

  • Apache (with mod_rewrite enabled) or Nginx
  • PHP 8.3+ with extensions: bcmath, ctype, curl, dom, exif, gd, intl, json, mbstring, openssl, pdo_mysql, tokenizer, xml, zip
  • MySQL 8.0+ or MariaDB 10.6+
  • Write permissions on your installation directory

Composer is not required for the initial wizard installation. It is required to install or update extensions after TastyIgniter is running.

  1. Download the setup wizard ZIP.
  2. Create a MySQL database and database user in your hosting control panel (new or existing TastyIgniter v3 database for upgrade).
  3. Upload and extract the wizard files to your web root so setup.php is accessible in the browser.
  4. Set write permissions on the setup/ directory (typically 755 or 775).
  5. Visit http://yoursite.com/setup.php in your browser.
  6. Follow the wizard:
    • Get started — accept the license and wait for requirements to pass
    • Database — enter your MySQL connection details (new database or existing TastyIgniter v3 database to upgrade)
    • Installing — the wizard downloads and configures TastyIgniter automatically
    • Complete — open the admin panel and complete the system setup
  7. Delete setup.php and the setup/ directory after confirming the site works.

For installation problems, see Troubleshooting.

  • Downloads the latest TastyIgniter distribution release with bundled dependencies from GitHub Releases (tastyigniter-*.zip, includes vendor/)
  • Extracts files into your web root (preserving the wizard files until you remove them)
  • Writes .env with your database credentials and detected site URL
  • Runs igniter:install in-process via Laravel's Artisan::call() — no CLI commands needed. Existing TastyIgniter v3 databases are migrated during this step.
  • Creates a root .htaccess that redirects requests to public/ when your docroot cannot be changed

The wizard installs a complete, ready-to-run copy of TastyIgniter with core dependencies already in vendor/. That is enough to complete installation and use the admin panel.

Installing or updating extensions (from the marketplace or manually) uses Composer.

If your shared host does not allow Composer, install extensions on a local or staging environment, then upload the changed vendor/ directory and any new extension files to production.

Document root: TastyIgniter v4 serves from the public/ directory. Prefer pointing your domain's document root to public/ in cPanel, Plesk, or DirectAdmin. If you cannot change the docroot, the wizard creates a root .htaccess that forwards requests to public/index.php.

PHP version: Select PHP 8.3 or higher in your hosting control panel. Enable all required extensions listed above — especially intl, which is commonly disabled by default.

Permissions: Ensure storage/ and bootstrap/cache/ are writable after installation (755 or 775).

Cron: Add a cron job to run the scheduler every minute:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

On shared hosts without SSH, use your control panel's cron interface and provide the full path to artisan.

Queue: Background jobs need a queue worker in production. See Setting up the queue daemon.

For installation problems, see Troubleshooting.


For VPS, Docker, or local development with terminal access.

  • Apache (with mod_rewrite enabled) or Nginx
  • PHP 8.3+ with the following extensions: bcmath, pdo_mysql, ctype, curl, openssl, dom, gd, exif, mbstring, json, tokenizer, zip, xml, intl
  • MySQL 8+ or PostgreSQL 10.0
  • Composer 2.0 or higher

Use Composer to create a new project:

composer create-project tastyigniter/tastyigniter tastyigniter

Alternatively, download the distribution release with bundled dependencies (tastyigniter-*.zip) from GitHub Releases, extract it.

From here, move on to Setting up TastyIgniter.

These are the requirements to run TastyIgniter as a package in a Laravel application:

  • Laravel 11+
  • MySQL 8+ or PostgreSQL 10.0
  • Composer 2.0 or higher

To install TastyIgniter as a package from your command line, run the following command in your Laravel project directory:

composer require tastyigniter/core

From here, you can move on to the Setting up TastyIgniter step.

Setup wizard path: If you used the wizard, igniter:install already ran automatically — skip to Post-installation steps.

CLI path: In the TastyIgniter root directory, run:

php artisan igniter:install

The setup command guides you through database configuration, application URL, and administrator details.

You can safely run the command multiple times if needed.

Command-line unattended setup

Provide values in .env and run:

php artisan igniter:install --no-interaction

There are some things you may need to set up after the installation is complete.

Once TastyIgniter is installed, grant the web server user write access to required directories:

sudo chmod -R 755 /path/to/tastyigniter
sudo chown -R www-data:www-data /path/to/tastyigniter

You should never set any folder or file to permission level 777.

Ensure storage/ and bootstrap/cache/ are writable.

Add the following cron entry (via crontab -e or your hosting control panel):

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Replace /path/to/artisan with the absolute path to the artisan file in your TastyIgniter root directory.

Task Scheduling is how time-based tasks are managed in TastyIgniter. Several core features, such as assigning orders and checking for updates, use the scheduler.

By default, the queue runs synchronously. Update QUEUE_CONNECTION in .env for async processing.

For production, run a queue worker (often via Supervisor):

php /path/to/artisan queue:work

See the Laravel Queue docs for details.

Debug mode

Debug mode is disabled by default in config/app.php. Always set APP_DEBUG=false in production.

CSRF protection

CSRF protection is enabled by default. Disable via the ENABLE_CSRF variable in .env if needed (not recommended).

Ensure the .htaccess file in the public/ directory is uploaded. mod_rewrite must be enabled and AllowOverride All set:

<Directory "/path/to/tastyigniter/public">
    AllowOverride All
</Directory>

Uncomment RewriteBase in .htaccess when installing in a subdirectory:

RewriteBase /subdirectory/

Include the bundled .nginx.conf from the TastyIgniter root:

include /path/to/tastyigniter/.nginx.conf;

Example server block:

server {
    listen 80;

    root /path/to/tastyigniter;
    index index.php;

    server_name mytastysite.com;

    include /path/to/tastyigniter/.nginx.conf;
}

Access the administrator panel at /admin. Complete the getting started steps on the dashboard to configure your restaurant, menu, and locations.

For installation problems, start with Troubleshooting. You can also:

Use this section when something goes wrong during or after installation. The setup wizard links here from failed requirement checks and install errors.

Log Location When to check
Setup wizard setup/setup.log Requirements, download, extract, .env, or igniter:install failures
Application storage/logs/laravel.log Errors after installation when visiting /admin or the storefront

Enable debug output in the wizard by appending ?debug to the setup URL (for example, setup.php?debug). Remove it once you have finished troubleshooting.

The Get started step checks your server automatically. Resolve every blocking failure before continuing.

  • Symptom: "PHP 8.3 or higher" fails.
  • Cause: PHP version is below 8.3.
  • Fix: Select PHP 8.3 or higher in your hosting control panel (cPanel → Select PHP Version, Plesk → PHP Settings, or equivalent). The wizard shows your current version under the requirement.
  • Symptom: "Required PHP extensions" fails.
  • Cause: One or more extensions is disabled.
  • Fix: Enable bcmath, ctype, dom, exif, gd, intl, json, mbstring, openssl, tokenizer, and xml in your PHP configuration. The intl extension is commonly disabled by default on shared hosting.
  • Symptom: "PDO MySQL extension" fails.
  • Cause: pdo or pdo_mysql is not loaded.
  • Fix: Enable the PDO and pdo_mysql extensions in your hosting panel.
  • Symptom: "cURL extension" fails.
  • Cause: cURL is disabled.
  • Fix: Enable the curl extension. TastyIgniter uses cURL for outbound HTTP requests, and the installer needs it to download the release package.
  • Symptom: "ZipArchive support" fails.
  • Cause: The zip extension is not installed.
  • Fix: Enable the zip PHP extension. It is required to extract the release archive.
  • Symptom: "GitHub Releases connectivity" fails.
  • Cause: The server cannot reach github.com over HTTPS.
  • Fix: Confirm outbound HTTPS is allowed by your host. Some firewalls block GitHub; ask your host to allow connections to github.com. The installer downloads directly from GitHub Releases (not the GitHub API).
  • Symptom: "Writable installation directory" fails.
  • Cause: The web root or setup/ directory is not writable by the web server user.
  • Fix: Set permissions on the installation directory and setup/ to 755 or 775. On shared hosting, use your file manager or ask your host to make the directory writable. A previous failed install may leave files in setup/temp/; that is normal and does not block this check.
  • Symptom: Warning for memory limit — installation can still continue.
  • Cause: memory_limit is below 256M.
  • Fix: Increase memory_limit to 256M or higher in PHP settings for a smoother install.
  • Symptom: Warning for max execution time — installation can still continue.
  • Cause: max_execution_time is below 120 seconds.
  • Fix: Increase max_execution_time to 120 or higher, or ask your host to allow longer web requests during installation.
  • Symptom: "Connection failed" when submitting database details.
  • Cause: Wrong hostname, port, username, password, or database name.
  • Fix: Verify credentials in your hosting control panel. Hostname is usually localhost or 127.0.0.1. Confirm the database user has access to the database you created.
  • Symptom: Error about MySQL or MariaDB version.
  • Cause: Database server is older than MySQL 8.0 or MariaDB 10.6.
  • Fix: Upgrade your database server or create the database on a host that meets the minimum version.
  • Symptom: "Database contains tables that do not look like TastyIgniter."
  • Cause: The database has tables from another application using the same table prefix.
  • Fix: Use a new empty database, an existing TastyIgniter v3 database (for upgrade), or change the table prefix to one that is not already in use.

Upgrading from v3: You can point the wizard at your existing TastyIgniter v3 database. igniter:install migrates the schema during the Installing step.

The installer runs six sub-steps: prepare → download → extract → config → migrate → finalize. Check setup/setup.log for the step that failed.

  • Symptom: "Downloading TastyIgniter" fails or times out.
  • Cause: Network issue, blocked outbound HTTPS, or the distribution release with bundled dependencies is unavailable.
  • Fix:
    • Confirm the server can reach https://github.com/tastyigniter/TastyIgniter/releases/latest.
    • Check TastyIgniter Releases for a tastyigniter-*.zip asset on the latest release.
    • Retry the install step. Downloads are resumable — a partial file in setup/temp/tastyigniter-release.zip is reused automatically.
  • Symptom: Error that the distribution release was not found for a specific version tag.
  • Cause: The GitHub release exists but the tastyigniter-*.zip distribution file has not been published yet.
  • Fix: Wait for the release asset to be published, or install a specific version by opening setup.php?version=x.y.z (for example, setup.php?version=4.3.0).
  • Symptom: "Extracting files" fails.
  • Cause: Missing ZipArchive extension, insufficient disk space, or the web root is not writable.
  • Fix: Enable the zip extension, free disk space, and ensure the installation directory is writable.
  • Symptom: ".env.example was not found in the release package" during the config step.
  • Cause: Files were not fully extracted, or dotfiles were skipped during copy.
  • Fix: Retry from the Installing step. Ensure bootstrap/cache/ and storage/ exist and are writable. If the problem persists, delete partially extracted files in the web root (except setup.php and setup/) and run the wizard again.
  • Symptom: tempnam(): file created in the system's temporary directory during config or migrate.
  • Cause: bootstrap/cache/ did not exist or was not writable when Laravel bootstrapped.
  • Fix: Create bootstrap/cache/ and storage/framework/cache/ manually, set permissions to 755 or 775, then retry. The wizard creates these directories automatically on recent versions.
  • Symptom: "Setting up database" fails.
  • Cause: Invalid credentials, incompatible database, PHP timeout, or low memory during migrations.
  • Fix:
    • Verify database credentials.
    • Use a new database or an existing TastyIgniter v3 database.
    • Increase max_execution_time and memory_limit in PHP settings.
    • Check setup/setup.log and storage/logs/laravel.log for the exact migration error.
    • Retry the install — completed download steps are skipped if the ZIP in setup/temp/ is still valid.
  • Symptom: "Installation failed. Check setup/setup.log or the troubleshooting guide."
  • Fix: Open setup/setup.log, find the last Handler error entry, and match it to the sections above. Use Try again on the install step after fixing the underlying issue.
  • Symptom: Site or /admin returns a blank page or 404 after the wizard completes.
  • Cause: Document root is not pointing to public/, or URL rewriting is disabled.
  • Fix:
    • Point your domain's document root to the public/ directory (recommended).
    • If you cannot change the docroot, confirm a root .htaccess was created that redirects to public/.
    • Enable mod_rewrite on Apache, or configure Nginx using the bundled .nginx.conf.
  • Symptom: Security concern or confusion after install.
  • Fix: Delete setup.php and the setup/ directory once you have confirmed the site and admin panel work.

These apply after TastyIgniter is installed, whether you used the wizard or the CLI.

  • Cause: mod_rewrite is not enabled, .htaccess is missing from public/, or RewriteBase is incorrect for a subdirectory install.
  • Fix: Enable mod_rewrite. Upload or restore public/.htaccess. For subdirectory installs, uncomment and set RewriteBase in public/.htaccess:
RewriteBase /subdirectory/
  • Cause: PHP fatal error, or storage/ / bootstrap/cache/ is not writable.
  • Fix:
    • Set permissions on storage/ and bootstrap/cache/ to 755 or 775.
    • Review storage/logs/laravel.log for the error.
    • Temporarily set APP_DEBUG=true in .env on a non-production environment to see the error (never leave debug enabled in production).
  • Cause: Active theme or required extensions are missing or not enabled.
  • Fix: Log in to /admin, confirm the default theme is installed, and check that required extensions are enabled.
  • Cause: Cron job is missing or points to the wrong artisan path.
  • Fix: Add a cron entry that runs every minute:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Replace /path/to/artisan with the absolute path to the artisan file in your TastyIgniter root.

  • Cause: Queue worker is not running, or QUEUE_CONNECTION is set to sync.
  • Fix: Set QUEUE_CONNECTION=database (or redis) in .env and run a queue worker:
php /path/to/artisan queue:work

See the Laravel Queue documentation for production setups with Supervisor.

If you are still stuck:

  1. Check setup/setup.log (wizard) and storage/logs/laravel.log (application).
  2. Search or post on the Community Forums.
  3. Join us on Discord.
  4. Report bugs on the GitHub issue tracker.

Did this answer your question?

Your feedback helps us improve our help articles.

See a mistake? Edit this page on GitHub

Need more help?

Explore the help center, join the community, or get priority support from the TastyIgniter team.