DocsPHP applications

PHP applications

Install Joomla, OpenCart, PrestaShop, phpBB, MediaWiki or Laravel in one click, find each admin area, and run other PHP apps you upload yourself.

ZoPanel installs popular PHP applications into an empty PHP website in one click: it downloads the latest stable release from the official source, creates a MariaDB database and runs the application's own command-line installer as the hosting account. Use it to start a new site quickly; for code you develop in Git, use Git deploy instead, and for WordPress see WordPress Toolkit.

Before you start

  • An empty PHP website. Create a website of type PHP in Websites → New website (see Websites and PHP). The installer refuses a folder that already holds files; only the default index.html, .well-known and .user.ini are allowed.
  • A free database. Each application gets its own database, which counts toward the package's database limit and the license (Free: 10 databases, see Licensing).
  • A suitable PHP version installed under Runtimes (see the table below). Laravel also needs Composer, installed under Runtimes → Composer.
  • The package must include App installer & WordPress tools. Without it, the card below is not shown.

Point the domain to the server and keep SSL on before you install: the application is configured with https:// only when the website already has a certificate.

Supported applications

Application Category PHP range in the panel Web server Admin area
Joomla Content management 8.3+ nginx /administrator/
OpenCart Online store 8.1+ Apache mode /admin/
PrestaShop Online store 7.4–8.1 Apache mode /admin<random>/ (secret)
phpBB Forum 7.2+ nginx /adm/
MediaWiki Wiki 8.3+ nginx /index.php/Special:SpecialPages
Laravel PHP framework 8.2+ nginx, document root public / (no admin area)

The panel checks the range above, which follows the release it installs:

Application Release installed Upstream PHP requirement
Joomla Latest stable (Joomla 6) PHP 8.3 or newer (requirements)
OpenCart Latest release package (4.1) PHP 8.1 or newer
PrestaShop Latest release that ships a download package (8.2) PHP 7.2–8.1
phpBB Latest stable (3.3) PHP 7.2 or newer
MediaWiki Latest stable branch PHP 8.3 or newer for 1.46 (compatibility)
Laravel Newest version Composer can install on the chosen PHP Laravel 13 needs PHP 8.3; on PHP 8.2 Composer installs an older major

If the website's PHP version is outside the panel range, ZoPanel switches the website to the newest installed version inside the range. If none is installed, the install stops with " needs PHP ; ask the administrator to install a suitable PHP version". To choose the version yourself, set PHP version on the PHP & config tab before you install.

Install an application

  1. Open the website (Websites → Manage) and stay on the Overview tab.
  2. In the Applications card, click the application. The card is shown while the website runs PHP, its document root is inside public_html and no application is installed yet.
  3. Check the badges: the PHP range, Apache mode (.htaccess) when the app needs it, and a link to the project's website.
  4. Fill in the fields:
Field Applications Rules
Site title All 1 to 100 characters. Defaults to the domain.
Admin email Joomla, OpenCart, PrestaShop, phpBB A valid address. Defaults to your account's email.
Admin username All except Laravel 3 to 40 letters, digits, ., _ or -. Defaults to admin; choose another name.
Admin password All except Laravel 8 to 128 characters, no :. A random 16-character password is proposed.
  1. Click Install. A task window shows the progress.

What the task does:

  1. Turns on Apache mode for OpenCart and PrestaShop (Apache is installed on the server the first time, see Apache mode).
  2. Creates a database and user named <account>_<two letters><four random characters> with a random 24-character password, linked to the website.
  3. Downloads the release over HTTPS (resuming if the connection drops), unpacks it and runs the installer. Passwords never appear on a command line.
  4. Removes the install/installation folder and makes the files holding the database password readable by the account only.
  5. Ends with the line Admin area: https://<domain>/<path>.

If any step fails, the half-installed files and the database are removed and the website is restored as it was, so you can fix the cause and try again.

Note: the database password is not shown in the panel. It is in the application's configuration file (see the next section). Change it under Databases only if you also update that file.

After the install

Once an application is installed, the website header shows an Admin area button that opens the admin URL (PrestaShop excepted, see below). All applications are installed in English; change the language in each admin area.

Application Sign in with Config file First steps
Joomla Admin username configuration.php Turn on Use URL Rewriting in Global Configuration for clean URLs (nginx already routes them to index.php). Install a language pack if needed.
OpenCart Admin username config.php, admin/config.php .htaccess.txt is already renamed to .htaccess, so SEO URLs work in Apache mode. Set up store details, payment and shipping.
PrestaShop Admin email and password app/config/parameters.php Copy the admin URL from the task log. The country is preset to Vietnam; change it under International settings. Emails were not sent during install.
phpBB Admin username config.php Email is disabled at install: turn it on in the ACP under Board configuration → Email settings.
MediaWiki Admin username (first letter capitalised by MediaWiki) LocalSettings.php Pages use /index.php/Title URLs. Edit LocalSettings.php for uploads, skins and permissions.
Laravel – .env See below.

Important: PrestaShop's admin folder is renamed to admin followed by 8 random characters, as PrestaShop requires. The address appears only in the task log (Tasks). Save it; if you lose it, find the folder whose name starts with admin in public_html with the File Manager.

Laravel

The Laravel installer runs composer create-project laravel/laravel with the website's PHP version, then:

  • writes .env from .env.example with APP_NAME (the site title), APP_ENV=production, APP_DEBUG=false, APP_URL and the MySQL connection (DB_CONNECTION=mysql, DB_HOST=localhost, the new database and user);
  • runs php artisan key:generate --force, php artisan migrate --force and php artisan storage:link;
  • sets the website's document root to public_html/public and the Laravel rewrite rules.

The project lives in public_html, outside the document root, so .env and vendor cannot be downloaded. For scheduler, queue and deployment details, see Laravel.

The installer works on a PHP website and on a Laravel website alike: the project always goes into public_html, and the document root becomes public_html/public.

Update an application

ZoPanel installs the applications but does not update them: use each project's own updater. Take a backup of the website and its database first (see Backups).

Application How to update
Joomla System → Update → Joomla in the administrator (docs).
OpenCart Follow the upgrade guide of your version (docs).
PrestaShop The Update Assistant module (docs).
phpBB Follow the update instructions in the release package (docs).
MediaWiki Replace the files, then run php maintenance/run.php update (docs).
Laravel composer update over SSH, then php artisan migrate --force.

Run command-line steps in the SSH terminal as the hosting account, with the same PHP version as the website, for example php8.3 maintenance/run.php update.

Other PHP applications

Any PHP application that is not in the list can be installed by hand:

  1. Create a PHP website with the PHP version the application needs.
  2. Upload the files to public_html with the File Manager or SFTP.
  3. Create a database under Databases and run the application's web installer.
  4. If the application serves from a subfolder (for example public or web), set Document root on the PHP & config tab, for example public_html/public. It must stay inside public_html.
  5. If it relies on .htaccess rewrites, turn on .htaccess support (Apache mode) on the Tools tab. With the Standard rules, nginx already sends unknown URLs to index.php, which is enough for most front controllers.

Composer

When the project has a composer.json, install its dependencies over SSH with the website's PHP version (Composer must be installed under Runtimes):

cd ~/domains/example.com/public_html
php8.3 /usr/local/bin/composer install --no-dev --optimize-autoloader

If the project is in a Git repository, Git deploy runs Composer for you on every release and detects Laravel and Symfony.

PHP options such as upload_max_filesize are set in Tools → PHP settings for this website; php_value lines in .htaccess are ignored.

Troubleshooting

Message or symptom What to do
"the website folder is not empty: install applications into a new, empty website" Install into a new PHP website, or empty public_html first.
"this website already runs an application; create a new website for …" One application per website. Create another website.
"applications need a PHP website" The website has no PHP version or is a proxy website. Set a PHP version or create a PHP website.
"… needs PHP …; ask the administrator to install a suitable PHP version" Install a PHP version in the range under Runtimes.
"database limit reached" The package allows no more databases. Delete one or ask for a bigger package.
"cannot find the latest … release" The server could not reach GitHub or the project's download site. Try again later.
Laravel: an older major version was installed The website runs PHP 8.2, so Composer installed the newest Laravel that supports it. For the latest Laravel, use PHP 8.3 or newer.
Laravel: composer failed Make sure Composer is installed under Runtimes and the PHP version is 8.2 or newer.
The Applications card is missing The website already has an application, has no PHP, its document root is outside public_html, or the package does not include App installer & WordPress tools.

The full installer output is kept in Tasks.


← Python apps Laravel →