Shared-Hosting-Installation
This is the complete, baby-step guide to installing FeedbackPulse SaaS on Shared Hosting environments. We cover cPanel, Plesk, DirectAdmin, CyberPanel, HestiaCP, and generic Shared Hosting panels.
FeedbackPulse SaaS is fully compatible with Shared Hosting โ even when exec() is disabled and symlinks aren't supported.
You do NOT need to run any
php artisancommands, SSH commands, or terminal commands. Everything is handled through the Web-Installer, the Admin-Panel, and your hosting panel's file manager. If you seephp artisancommands in other guides, those are for VPS/dedicated servers only โ skip them.
Will My Hosting Work?โ
FeedbackPulse SaaS works on any Shared Hosting that meets these minimum requirements:
| Requirement | Minimum | How to Check |
|---|---|---|
| PHP | 8.2+ | cPanel โ Select PHP Version |
| MySQL/MariaDB | 8.0+ / 10.6+ | cPanel โ MySQL Datenbanks |
mod_rewrite | Enabled | Usually enabled by default |
| Cron Jobs | Supported | cPanel โ Cron Jobs |
| File Manager or FTP | Available | Standard on all hosts |
What If exec() Is Disabled?โ
No problem! FeedbackPulse automatically detects this and uses pure PHP alternatives:
- Datenbank backups use PHP-based dump instead of
mysqldump - All other features work without
exec()
What If Symlinks Are Disabled?โ
No problem! FeedbackPulse includes a built-in storage fallback that serves uploaded files (logos, images) through PHP when the storage:link symlink can't be created.
Before You Startโ
Have these ready:
- Your hosting login credentials (cPanel/Plesk/etc.)
- FTP or File Manager access
- Your Envato purchase code
- SMTP email credentials (optional but recommended)
cPanel Installation
Step 1: Create the Datenbankโ
- Melden Sie sich an to cPanel
- Gehen Sie zu MySQL Datenbanks (under Datenbanks section)
- Create a new database:
- Datenbank name:
feedbackpulse(your cPanel may prefix it, e.g.,cpuser_feedbackpulse) - Click Create Datenbank
- Datenbank name:
- Create a new user:
- Username:
fp_user(will becomecpuser_fp_user) - Password: Click Password Generator for a strong password โ save this!
- Click Create User
- Username:
- Add user to database:
- Select the user and database you just created
- Click Add
- On the privileges page, check ALL PRIVILEGES
- Click Make Changes
Write down: Your full database name, username, and password. You'll need them during installation.
Step 2: Upload Filesโ
Option A: File Manager (Easiest)โ
- Gehen Sie zu cPanel โ File Manager
- Navigieren Sie zu
public_html(or a subdomain folder) - Click Upload in the toolbar
- Upload the
feedbackpulse-saas.zipfile - Wait for the upload to complete
- Right-click the ZIP file โ Extract
- The files are now extracted into
public_html/feedbackpulse-saas/
Option B: FTP Uploadโ
- Connect via FTP (FileZilla, WinSCP, etc.)
- Host: Your domain or
ftp.yourdomain.com - Username: Your cPanel username
- Password: Your cPanel password
- Port: 21
- Host: Your domain or
- Navigieren Sie zu
public_html/ - Upload the entire extracted
feedbackpulse-saasfolder
Tipp: Uploading the ZIP and extracting on the server is much faster than uploading thousands of individual files via FTP.
Step 3: Set the Document Rootโ
This is the most important step. The web server must point to the public/ folder inside your FeedbackPulse directory.
Method A: Subdomain (Recommended for Shared Hosting)โ
- Gehen Sie zu cPanel โ Domains (or Subdomains)
- Click Create a New Domain (or Create Subdomain)
- Geben Sie Ihre domain or subdomain:
feedback.yourdomain.com - Set Document Root to:
public_html/feedbackpulse-saas/public - Click Submit
This is the cleanest approach. Your FeedbackPulse installation lives at
feedback.yourdomain.comwith the correct document root.
Method B: Addon Domainโ
- Gehen Sie zu cPanel โ Addon Domains (older cPanel) or Domains
- Add your domain
- Set document root to:
public_html/feedbackpulse-saas/public
Method C: Main Domain (public_html)โ
If you want FeedbackPulse on your main domain (yourdomain.com):
Option 1: Change Document Root (if your host allows)
Some hosts let you change the document root of your main domain:
- Gehen Sie zu cPanel โ Domains
- Click Manage on your main domain
- Change Document Root to:
public_html/feedbackpulse-saas/public
Option 2: Use .htaccess Redirect (if you can't change document root)
FeedbackPulse ships with a root .htaccess that automatically routes requests to the public/ folder. To use this:
- Move all files from
feedbackpulse-saas/directly intopublic_html/- So
public_html/.htaccess,public_html/public/,public_html/app/, etc.
- So
- The root
.htaccesswill forward all requests topublic/
Option 3: Copy public/ Contents (Last Resort)
If nothing else works:
- Upload all FeedbackPulse files to a folder outside
public_html(e.g.,/home/cpuser/feedbackpulse/) - Copy only the contents of the
public/folder intopublic_html/ - Edit
public_html/index.phpto update the paths:
// Change this line:
require __DIR__.'/../vendor/autoload.php';
// To:
require '/home/cpuser/feedbackpulse/vendor/autoload.php';
// Change this line:
$app = require_once __DIR__.'/../bootstrap/app.php';
// To:
$app = require_once '/home/cpuser/feedbackpulse/bootstrap/app.php';
Replace
/home/cpuser/feedbackpulse/with your actual path. Find it via cPanel โ Terminal (runpwd) or File Manager (look at the breadcrumb path).
Step 4: Set PHP Versionโ
- Gehen Sie zu cPanel โ Select PHP Version (or MultiPHP Manager)
- Select your domain from the list
- Set PHP version to 8.2 or higher
- Click Apply
Enable Required Extensionsโ
While in the PHP settings:
- Click Extensions tab
- Make sure these are checked:
pdo_mysqlmbstringopenssltokenizerjsoncurlxmlctypefileinfobcmathgdzip
- Click Save
Adjust PHP Einstellungenโ
Gehen Sie zu Options tab and set:
| Setting | Value |
|---|---|
upload_max_filesize | 20M |
post_max_size | 25M |
memory_limit | 256M |
max_execution_time | 300 |
max_input_vars | 3000 |
Step 5: Install Composer Dependenciesโ
If You Have Terminal Accessโ
- Gehen Sie zu cPanel โ Terminal (or SSH in)
- Navigieren Sie zu your FeedbackPulse directory:
cd ~/public_html/feedbackpulse-saas
- Run:
php composer.phar install --no-dev --optimize-autoloader
No
composercommand? FeedbackPulse ships withcomposer.pharin the root directory. Usephp composer.pharinstead ofcomposer.
If You Don't Have Terminal Accessโ
If your host doesn't provide Terminal/SSH:
- Install Composer dependencies on your local computer first:
composer install --no-dev --optimize-autoloader
- Then upload the entire project including the
vendor/folder to your hosting
Pre-built packages: If you purchased the "with vendor" package from CodeCanyon, the
vendor/folder is already included and you can skip this step entirely.
Step 6: Set File Permissionsโ
- Gehen Sie zu cPanel โ File Manager
- Navigieren Sie zu your FeedbackPulse directory
- Right-click the
storagefolder โ Change Permissions - Set to
0775and check "Recurse into subdirectories" - Do the same for the
bootstrap/cachefolder
If you have Terminal access:
cd ~/public_html/feedbackpulse-saas
chmod -R 775 storage bootstrap/cache
Step 7: Run the Web Installerโ
- Oeffnen Sie Ihren Browser
- Navigieren Sie zu:
https://yourdomain.com/install(orhttps://feedback.yourdomain.com/install) - Follow the 5-step wizard:
- License: Geben Sie Ihre Envato purchase code
- Anforderungen: Everything should be green
- Datenbank: Enter the database name, username, and password from Step 1
- Admin: Create your superadmin account
- Email: Enter SMTP details (or skip for now)
Datenbank host on cPanel: Usually
localhostor127.0.0.1. Some hosts use a different server โ check your cPanel MySQL settings.
Step 8: Set Up Cron Jobโ
FeedbackPulse needs a Cron-Job for scheduled tasks (E-Mail-Zusammenfassungs, trial expiry, reports, etc.). On Shared Hosting you have two options:
Option A: URL/wget Cron (recommended for Shared Hosting)โ
If your panel only supports URL-based cron (no CLI commands), use FeedbackPulse's built-in web cron endpoint:
- During installation, a
CRON_TOKENis auto-generated and shown on the completion page - Gehen Sie zu cPanel โ Cron Jobs
- Under "Add New Cron Job":
- Common Einstellungen: Select "Once Per Minute" (or "Every 5 Minutes")
- Command:
wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN" - Click Add New Cron Job
Where to find your token: Check your
.envfile for theCRON_TOKEN=line. It was shown on the installer completion page.
Sicherheit: The token is a 64-character random string. Without it the endpoint returns 403.
Option B: CLI Command (if your panel supports it)โ
- Gehen Sie zu cPanel โ Cron Jobs
- Under "Add New Cron Job":
- Common Einstellungen: Select "Once Per Minute ( * * * )"
- Command:
/usr/local/bin/php /home/cpuser/public_html/feedbackpulse-saas/artisan schedule:run >> /dev/null 2>&1 - Click Add New Cron Job
Wichtig: Replace
/home/cpuser/public_html/feedbackpulse-saas/with your actual path!
Finding the Correct Paths (for Option B)โ
PHP path: Try these (one will work):
/usr/local/bin/php/usr/bin/php/opt/cpanel/ea-php82/root/usr/bin/php(cPanel with EasyApache)
Project path:
- Check in cPanel โ Terminal: run
cd ~/public_html/feedbackpulse-saas && pwd - Or look at the File Manager breadcrumb path
Test the cron: In Terminal, run:
/usr/local/bin/php /home/cpuser/public_html/feedbackpulse-saas/artisan schedule:runIf it works, the cron is correct.
Step 9: SSL Certificateโ
- Gehen Sie zu cPanel โ SSL/TLS (or Let's Encrypt SSL if available)
- If your host provides AutoSSL or Let's Encrypt, enable it for your domain
- Wait a few minutes for the certificate to be issued
- Verify by visiting
https://yourdomain.com
Most modern shared hosts include free SSL via Let's Encrypt or AutoSSL.
Step 10: Verify Installationโ
- Visit
https://yourdomain.comโ see the Landingpage - Visit
https://yourdomain.com/loginโ log in with your superadmin credentials - Visit
https://yourdomain.com/upโ should show "OK" - Upload a logo in Einstellungen โ Branding โ verify the image displays correctly
Plesk Installation
Step 1: Create the Datenbankโ
- Melden Sie sich an to Plesk
- Gehen Sie zu Datenbanks โ Add Datenbank
- Datenbank name:
feedbackpulse - Create a database user with a strong password
- Click OK
Step 2: Upload Filesโ
- Gehen Sie zu Files (File Manager)
- Navigieren Sie zu your domain's directory (e.g.,
httpdocs/) - Upload and extract
feedbackpulse-saas.zip
OR via FTPโ
Use the FTP credentials from Plesk โ FTP Access
Step 3: Set Document Rootโ
- Gehen Sie zu Websites & Domains โ your domain
- Click Hosting & DNS โ Hosting Einstellungen (or Apache & nginx Einstellungen)
- Change Document root to:
httpdocs/feedbackpulse-saas/public - Click OK
Plesk makes this easy โ you can set the document root directly in hosting settings.
Step 4: Set PHP Versionโ
- Gehen Sie zu Websites & Domains โ your domain
- Click PHP Einstellungen
- Set PHP version to 8.2 or higher
- Under Additional configuration directives, add:
upload_max_filesize = 20M
post_max_size = 25M
memory_limit = 256M
max_execution_time = 300
- Click OK
Step 5: Install Dependenciesโ
- Gehen Sie zu Websites & Domains โ your domain
- Click SSH (if available) or use Terminal
- Run:
cd httpdocs/feedbackpulse-saas
php composer.phar install --no-dev --optimize-autoloader
chmod -R 775 storage bootstrap/cache
Step 6: Run the Web Installerโ
Navigieren Sie zu https://yourdomain.com/install and follow the wizard.
Step 7: Set Up Cron Jobโ
- Gehen Sie zu Websites & Domains โ Scheduled Tasks (or Cron Jobs)
- Click Add Task
- Recommended (URL method): Set command to:
wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN"
- Alternative (CLI method): If you prefer CLI:
/usr/bin/php /var/www/vhosts/yourdomain.com/httpdocs/feedbackpulse-saas/artisan schedule:run
- Run: Every minute (
* * * * *) - Click OK
DirectAdmin Installation
Step 1: Create Datenbankโ
- Melden Sie sich an to DirectAdmin
- Gehen Sie zu MySQL Management โ Create new Datenbank
- Datenbank name:
feedbackpulse - Datenbank user:
fp_user - Set a strong password
- Click Create
Step 2: Upload & Extractโ
- Gehen Sie zu File Manager
- Navigieren Sie zu
domains/yourdomain.com/public_html/ - Upload the ZIP file
- Extract it
Step 3: Set Document Rootโ
In DirectAdmin, the easiest approach is to use a subdomain:
- Gehen Sie zu Subdomain Management
- Create a subdomain (e.g.,
feedback.yourdomain.com) - Set document root to:
public_html/feedbackpulse-saas/public
Or use the .htaccess method described in the cPanel section.
Step 4: PHP Version & Cronโ
- PHP Version: Gehen Sie zu PHP Version Selector โ set to 8.2+
- Cron: Gehen Sie zu Cron Jobs โ add (recommended URL method):
* * * * * wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN"
Or CLI method:
* * * * * /usr/local/bin/php /home/username/domains/yourdomain.com/public_html/feedbackpulse-saas/artisan schedule:run >> /dev/null 2>&1
Step 5: Run Installerโ
Navigieren Sie zu https://yourdomain.com/install (or subdomain URL).
CyberPanel Installation
- Create Website โ add your domain
- File Manager โ upload files to
/home/yourdomain.com/public_html/ - Create Datenbank in MySQL section
- Set PHP to 8.2+
- Document Root: Use the OpenLiteSpeed rewrite context or
.htaccess - Cron Jobs: Add via CyberPanel's Cron section
- Run installer at
https://yourdomain.com/install
HestiaCP Installation
- Web โ Add domain
- Advanced Options โ set document root to
public_html/feedbackpulse-saas/public - DB โ Create MySQL database
- Upload files via File Manager or SFTP
- Cron โ add the schedule:run command
- Run installer
Generic Shared Hosting (Any Panel)
If your hosting panel isn't listed above, follow this universal approach:
- Create a database โ use your panel's MySQL/database section
- Upload files โ via File Manager or FTP
- Point domain to
public/โ change document root or use.htaccessredirect - Set PHP 8.2+ โ via PHP version selector
- Enable extensions โ pdo_mysql, mbstring, curl, gd, zip, bcmath, fileinfo, xml
- Set permissions โ
storage/andbootstrap/cache/must be writable (775) - Run installer โ visit
/installin browser - Add cron โ
* * * * *runningwget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN" - Enable SSL โ via your panel's SSL section
Updating on Shared Hosting
When a new version is released, updating is simple โ no terminal needed:
- Back up โ go to Admin Panel โ Backups and create a database backup
- Upload new files โ use File Manager or FTP to overwrite existing files (keep your
.envfile!) - Visit
https://yourdomain.com/updateand log in as Super Admin - Click "Run Update" โ this automatically runs database migrations, clears caches, and updates the version
That's it! No
php artisancommands, no SSH, no terminal. Just upload and click.
Shared Hosting Fehlerbehebung
"500 Internal Server Error" After Uploadโ
Cause: Usually a permissions issue.
Fix:
- Set
storage/to 775 recursively - Set
bootstrap/cache/to 775 - Check
.htaccessfiles are present (some FTP clients skip dotfiles)
"404 Not Found" on All Pagesโ
Cause: mod_rewrite is not enabled or .htaccess is not being read.
Fix:
- Verify
.htaccessexists in both the root ANDpublic/directories - Contact your host to enable
mod_rewrite - Make sure
AllowOverride Allis set (ask your host)
"Class Not Found" or "Vendor Autoload" Errorโ
Cause: The vendor/ folder is missing.
Fix: You need to run composer install or upload the vendor/ directory. See Step 5 in the cPanel section.
Images/Logos Not Showingโ
Cause: The storage symlink wasn't created (common on Shared Hosting).
Fix: FeedbackPulse automatically serves files via PHP when the symlink is missing. If images still don't show:
- Check
storage/app/public/directory exists and is writable - Try creating the symlink manually via Terminal:
ln -s /home/user/feedbackpulse-saas/storage/app/public /home/user/feedbackpulse-saas/public/storage
- If that fails, the PHP fallback will handle it automatically
"Datenbank Connection Refused"โ
Cause: Wrong database host on Shared Hosting.
Fix:
- Try
localhostfirst - If that fails, try
127.0.0.1 - Some hosts use a remote MySQL server (check your panel for the MySQL host)
- On cPanel: check Remote MySQL section
Cron Job Not Runningโ
Fix:
- Verify the PHP path is correct:
- Try:
/usr/local/bin/phpor/usr/bin/php - On EasyApache (cPanel):
/opt/cpanel/ea-php82/root/usr/bin/php
- Try:
- Verify the project path is correct (use
pwdin Terminal) - Test manually in Terminal first
- Check cPanel's cron email for error messages
"Allowed Memory Size Exhausted"โ
Fix: Increase PHP memory limit:
- cPanel โ Select PHP Version โ Options โ
memory_limit=256M - Or add to
.htaccess:php_value memory_limit 256M
Can't Access Installerโ
Fix:
- Make sure you're visiting
/install(not/install/) - Delete
storage/installed.lockif you need to re-run the installer - Verify the
.htaccessrewrite is working
Shared Hosting Tips & Best Practices
Performanceโ
- Use file sessions (default) โ works reliably on Shared Hosting out of the box. You can switch to
databasesessions later via.envfor extra reliability - Enable OPcache if available in your PHP settings
- Use CDN (like Cloudflare free plan) for static assets
Sicherheitโ
- Keep the main application files outside
public_htmlif possible (use Method C from cPanel section) - Never expose the
.envfile โ the.htaccessblocks it, but verify - Enable SSL (most hosts offer free Let's Encrypt)
- Keep PHP updated to the latest 8.2.x patch
Backupsโ
- FeedbackPulse includes a built-in backup feature that works without
exec() - On Shared Hosting, it uses PHP-based backup (slightly slower but fully functional)
- Also use your hosting panel's backup feature as an additional safety net
Emailโ
- Shared hosting SMTP usually has sending limits (100-500/day)
- For production SaaS with many tenants, consider using an external SMTP provider (Mailgun, SendGrid)
- Configure external SMTP in Admin โ Einstellungen โ Email
Storage Spaceโ
- Monitor your hosting disk usage โ feedback photos can add up
- Configure Datenaufbewahrung policies to auto-delete old data
- Use your panel's Disk Usage tool to track space
After Installation
Once installed on Shared Hosting, everything works the same as a VPS installation:
- Melden Sie sich an at
/loginwith your superadmin credentials - Gehen Sie zu Admin โ Plans to review Abonnementplaene
- Gehen Sie zu Admin โ Einstellungen to configure payments, email, AI
- Gehen Sie zu Admin โ Landing Page to customize your homepage
- Test registration in an incognito window
See: