Explore complete technical guides covering installation, system requirements, performance benchmarks, customization methods, and troubleshooting.
The Quickqr Contactless Restaurant QR Menu Maker is a modern PHP Laravel 10 application that lets restaurants generate QR‑coded menus in seconds. It ships with a clean MySQL schema, Bootstrap 5 UI, and jQuery‑enhanced admin panel. This guide walks you through a production‑ready installation on both cPanel shared hosting and VPS (Apache or Nginx) environments, covering:
chmod 775)| Requirement | Minimum Recommended | Why It Matters |
|---|---|---|
| OS | Ubuntu 22.04 LTS / CentOS 9 | Stable, long‑term support for PHP & MySQL |
| Web Server | Apache 2.4+ or Nginx 1.22+ | Both support Laravel’s .htaccess or nginx.conf |
| PHP | 8.2 (Laravel 10 requires ≥ 8.1) | New language features & security patches |
| PHP Extensions | pdo_mysql, openssl, mbstring, tokenizer, xml, ctype, json, bcmath, fileinfo | Laravel core functionality |
| Database | MySQL 8.0+ or MariaDB 10.5+ | Full compatibility with migrations |
| Composer | 2.5+ | Dependency management |
| Node.js & npm (optional) | 18.x+ | For compiling assets (Bootstrap, jQuery) |
| Disk Space | ≥ 500 MB (code + DB) | Room for logs & uploads |
| RAM | 1 GB (shared) / 2 GB (VPS) | Handles Laravel queues & caching |
https://yourdomain.com/cpanel. Use File Manager and Terminal (or SSH if enabled).ssh root@your-vps-ip# Update repository cache
apt update && apt upgrade -y
# Install PHP 8.2 + extensions
apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-json php8.2-ctype php8.2-tokenizer php8.2-pdo php8.2-mysql php8.2-fileinfo
# Install Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
# Install MySQL (or MariaDB)
apt install -y mysql-server-- Log into MySQL as root
mysql -u root -p
-- Create database
CREATE DATABASE quickqr_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Create user with strong password
CREATE USER 'quickqr_user'@'localhost' IDENTIFIED BY 'StrongP@ssw0rd!';
-- Grant privileges
GRANT ALL PRIVILEGES ON quickqr_db.* TO 'quickqr_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;.envCopy the sample environment file and edit the DB credentials:
cp .env.example .env
nano .env # or use any editorAPP_NAME="Quickqr Contactless Restaurant QR Menu Maker"
APP_ENV=production
APP_KEY= # will be generated later
APP_DEBUG=false
APP_URL=https://yourdomain.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=quickqr_db
DB_USERNAME=quickqr_user
DB_PASSWORD=StrongP@ssw0rd!.env file to version control; it contains sensitive credentials.public_html/quickqr.scp:scp -r /local/path/quickqr root@your-vps-ip:/var/www/quickqrcd /var/www/quickqr
# Directories need write access for Laravel
find . -type d -exec chmod 775 {} \;
# Files should be readable
find . -type f -exec chmod 664 {} \;
# Storage & bootstrap/cache must be writable by web server
chmod -R 775 storage bootstrap/cachechmod 775 grants read/write/execute to owner and group while keeping others read‑only – ideal for shared hosting where the web user belongs to the same group.composer install --optimize-autoloader --no-devphp artisan key:generatephp artisan migrate --force
php artisan db:seed --force # optional, loads demo dataCreate a virtual host file (VPS) or use cPanel’s Domain > Apache Handlers.
<VirtualHost *:80>
ServerName quickqr.yourdomain.com
DocumentRoot /var/www/quickqr/public
<Directory /var/www/quickqr/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/quickqr_error.log
CustomLog ${APACHE_LOG_DIR}/quickqr_access.log combined
</VirtualHost>Enable the site and reload Apache:
a2ensite quickqr.conf
systemctl reload apache2.htaccess from Laravel’s public folder is intact; it handles URL rewriting for clean routes.Create a server block:
server {
listen 80;
server_name quickqr.yourdomain.com;
root /var/www/quickqr/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
location ~ /\.(?!well-known).* {
deny all;
}
access_log /var/log/nginx/quickqr_access.log;
error_log /var/log/nginx/quickqr_error.log;
}Enable and test:
ln -s /etc/nginx/sites-available/quickqr.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx| Symptom | Likely Cause | Fix |
|---|---|---|
| 500 Internal Server Error | Missing .env or incorrect APP_KEY | Run php artisan key:generate and verify .env values |
| “Class not found” | Composer autoload not generated | Re‑run composer install --optimize-autoloader |
| Database connection error | Wrong DB credentials or MySQL not running | Test with mysql -u quickqr_user -p -h 127.0.0.1 quickqr_db |
| CSS/JS not loading | public folder permissions or missing compiled assets | Run npm install && npm run prod (if you have Node) or ensure storage is linked: php artisan storage:link |
| Redirect loop after login | APP_URL mismatched (http vs https) | Set APP_URL=https://yourdomain.com and enable SSL in web server config |
storage/logs/laravel.log) and the web server error log for detailed clues.certbot) and force HTTPS in your virtual host.php artisan config:cache, php artisan route:cache, php artisan view:cache. apt install -y supervisor
cat > /etc/supervisor/conf.d/quickqr-worker.conf <<EOF
[program:quickqr-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/quickqr/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/quickqr/worker.log
EOF
supervisorctl reread && supervisorctl updatemysqldump and file system snapshots.<link rel="canonical" href="https://yourdomain.com/"> in the <head> of the menu pages.AddOutputFilterByType DEFLATE text/html text/css application/javascript) and leverage browser caching (expires max).A: Laravel 10 requires PHP 8.1+. If your host cannot upgrade, you’ll need to switch to a VPS or a newer shared plan. Attempting to run the script on PHP 8.0 will result in fatal errors during Composer install.
A: Laravel’s migration system handles schema changes. After pulling the new code, run:
php artisan migrate --forceIf you need to roll back a specific migration:
php artisan migrate:rollback --step=1Always backup the database before running migrations on production.
A: Yes. Developers can order the verified clean untouched source code with instant on‑demand delivery for a flat $5.00 rate via 217G. The package includes the original Laravel project, Composer lock file, and all front‑end assets—no hidden modifications.
Deploying **Quick
Order now for only $5.00 flat. Receive the complete untouched ZIP archive and database SQL within minutes.